MVVM架构~knockoutjs系列之为Ajax传递Ko数组对象
一些要说的
这是一个很有意思的题目,在KO里,有对象和数组对象两种,但这两种对象对外表现都是一个function,如果希望得到他的值,需要进行函数式调用,如ko_a(),它的结果为一个具体值或者数组或者函数,而ko_a则表示一个KO对象。
今天主要说一下如何在ajax方法里向后台传递对象和数组等参数,一般说来,我们为后台传递的是字符串和数字,而如果希望传递对象,则需要使用$.param这个方法,下面具体用代码说一下。
一些要做的
一般后以的代码理想是这样的
public JsonResult GeneratorOrder(int[] idArr)//一些需要被产生订单的购物车记录ID
{
//TODO:Generator Order
return Json(idArr);
}
而这样的后台接口来说,我们前台ajax的参数需要做一个$.param的处理,如下
$.ajax({
type: "post",
url: "/order/GeneratorOrder",
data: $.param( self.SelCart(),true), //! 把数组直接作为$.param的参数是不可以的
dataType: "json",
success: function (data) {
Boxy.alert("To payPage of products:" + JSON.stringify(data));
}
});
而事实上,上面的代码运行结果却是错误的,因为$.param方法只支持对象,不支持直接的数组,而数组如果在对象里,是可以被支持的,这也很有意思,所以,上面代码我们需要修改一下
$.ajax({
type: "post",
url: "/order/GeneratorOrder",
data: $.param({ idArr: self.SelCart() },true), //! 注意要传递第二个参数
dataType: "json",
success: function (data) {
Boxy.alert("To payPage of products:" + JSON.stringify(data));
}
});
下面的运行结果是我们希望看到的
aaarticlea/png;base64,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" alt="" />
MVVM架构~knockoutjs系列之为Ajax传递Ko数组对象的更多相关文章
- MVVM架构~knockoutjs系列之扩展ajax验证~验证输入数据是否与后台数据相等
返回目录 在看这篇文章之前,你有必要先看我之前的文章,之前文章是将一个方法以参数的形式传给KO,然后返回一个真假值,去做验证,这类似于面向对象语言里的委托,在JS里我们叫它回调方法,本篇文章与前一文章 ...
- MVVM架构~knockoutjs系列之扩展ajax验证~验证数据是否存在
返回目录 在大部分网站里,用户名都是唯一的,即当用户注册时,如果用户输入的名字不合法,我们需要提示用户,让用户再起个新名字,而这种复杂的验证一般是通过JS来实现的,如果把它集成到ko里,那就完美了.有 ...
- MVVM架构~knockoutjs系列之表单添加(验证)与列表操作源码开放
返回目录 本文章应该是knockoutjs系列的最后一篇了,前几篇中主要讲一些基础知识,这一讲主要是一个实际的例子,对于一个对象的添加与编辑功能的实现,并将项目源代码公开了,共大家一起学习! knoc ...
- MVVM架构~Knockoutjs系列之验证机制的引入
返回目录 对于Knockoutjs本身来说,没有提供验证模块,不过,有第三方的扩展,就像你为jquery库作extensions一样,这讲中我将介绍一个Knockout插件扩展,knockout.va ...
- MVVM架构~Knockoutjs系列之对象与对象组合
返回目录 在面向对象的程序设计里,对象是核心,一切皆为对象,对象与对象之间的关系可以表现为继承和组合,而在Knockoutjs或者JS里,也存在着对象的概念,今天主要说一下JS里的对象及对象的组合. ...
- MVVM架构~knockoutjs系列之包括区域级联列表的增删改
返回目录 这个例子我做了几次,之前总是有BUG,目前测试后,确定没有BUG才发上来的,主要功能是实现“我的银行”模块的增删改的功能,这个里面包括了级联列表的区域选择,这部分是难点,在开发过程中,我们应 ...
- MVVM架构~Knockoutjs系列之text,value,attr,visible,with的数据绑定
返回目录 Knockoutjs是微软mvc4里一个新东西,用这在MVC环境里实现MVVM,小微这次没有大张旗鼓,而是愉愉的为我们开发者嵌入了一个实现MVVM的插件,这下面的几篇文章中,我和大家将一起去 ...
- MVVM架构~Knockoutjs系列之js接收C#数据集合的方式
返回目录 在controller里将数据拿到,并且存储到ViewBag对象里,最后在View上显示出来,这是传统的MVC开发方式,事实上引入Knockoutjs以后,这种方式还是适合的,Knockou ...
- MVVM架构~knockoutjs系列之正则表达式使规则更灵活
返回目录 几乎每种验证架构都会有正则表达式的加盟,一般地,一种验证架构首先会提供一些标准的,常用的验证规则,它们通常是数字验证,电话验证,email验证,长度验证,范围验证,日期验证等,而如果使你的验 ...
随机推荐
- Android中关于dip和px以及转换的总结
我们在页面布局的时候,经常会设置容器的长度,但是到底该使用哪个作为长度的单位而懊恼.在Android中支持的描述大小区域的类型有以下几种: px(pixels)——像素:不同的设备显示效果相同,一般我 ...
- BZOJ 1564: [NOI2009]二叉查找树
链接:http://www.lydsy.com/JudgeOnline/problem.php?id=1564 Description Input Output 只有一个数字,即你所能得到的整棵树的访 ...
- android/ios js 启动apk
1.在移动设备访问某个连接时时,如果本地安装了其应用客户端,则浏览器会调用本地客户端,没有安装则会跳转到下载页面,提示安装.刚好有这样的需求,网上参考了其他人的实现,大部分都是关于APK和本地js交互 ...
- redis迁移工具-redis-migrate-tool使用测试
https://github.com/vipshop/redis-migrate-tool一.安装redis-migrate-tool a.下载redis-migrate-tool软件包 https: ...
- C++ 文章列表
C++ 文章列表 Cocos2dx(1) iconv 跨平台的使用方法(Android, IOS) --- 转码(中文乱码)http://www.cnblogs.com/TS-qrt/articles ...
- PHP-Mysqli扩展库的预编译
(1)预编译的好处 假如要执行100条类似的sql语句,每一次执行,在MySQL端都会进行一次编译,效率很低.提高效率的方法就是--减少编译的次数. 先制造一个sql语句的模板,在MySQL端预先编译 ...
- SQL分页常用的两个存储过程
在做数据绑定时,我们常常会遇到分页事件,下面记录一下分页常用到SQL的两个存储过程 ①/****分页数据总数****//****** 对象: StoredProcedure [dbo].[GetRe ...
- MyEclipse10优化
Myeclipse10 优化设置 一.myeclipse字体设置 Window->Preferences->General->Appearance->Colors and Fo ...
- chrome 问题
1.chrome表单自动填充去掉input黄色背景解决方案 http://blog.csdn.net/wangxiaohui6687/article/details/10149579 2.chrome ...
- [转]C语言指针学习经验总结浅谈
指针是C语言的难点和重点,但指针也是C语言的灵魂 . 这篇C语言指针学习经验总结主要是我入职以来学习C指针过程中的点滴记录.文档里面就不重复书上说得很清楚的概念性东西,只把一些说得不清楚或理解起来比较 ...