mvc数组绑定-jquery ajax
<script>
var list=[];//数组
list[0]=1001;
list[1]=1002;
list[1]=1003; var json_data = { selected: list};
$.ajax({
url: '/xk/select',
type: 'POST',
data: json_data,
success: function (j) { },
error: function () { }
});
</script>
上述请求发出后,jquery会把json_data序列化为id=1&selected[]=1001&selected[]=1002&selected[]=1003的形式
假如mvc的action如下,seleted始终为null
public JsonResult select(int[] selected){}
MVC只会把下面两种请求转换为数组:
同名:arr=1001&arr=1002
索引:arr[0]=1001&arr[1]=1002
因此,jquery.ajax不能采用数组方式传递参数,可以换成对象的方式
<script>
var obj= {};//注意这里是对象,不是数组
obj[0] ="1001" ;//中括号属性设置法,等价于obj["0"]="1001";
obj[1] ="1002" ;
obj[1] ="1003" ; //下面就可以发送请求了 var json_data = { selected: obj};
$.ajax({
url: '/xk/select',
type: 'POST',
data: json_data,
success: function (j) { },
error: function () { }
});
</script>
这种处理,请求数据变成了selected[0]=1001&selected[1]=1002&selected[2]=1003的形式,
另外一种方式就是,ajax加traditional : true
<script>
var list= [];//注意这里是数组
list[0] ="1001" ;//中括号属性设置法,等价于student_ids["0"]="1001";
list[1] ="1002" ;
list[1] ="1003" ;
//下面就可以发送请求了 var json_data = { 'selected': list};
$.ajax({
url: '/xk/select',
type: 'POST',
data: json_data,
traditional : true,//注意这里
success: function (j) { },
error: function () { }
});
</script>
通过这种方式,请求变成了selected=1001&selected=1002&selected=1003的形式
public JsonResult Select(int[] selected){}就可以正常接收数组selected了
以上是简单数组绑定,下面考虑复杂对象数组绑定
<script>
var list= [];
list.push( { book_name: “1”, book_version: "1","book_publication":"1","book_author":"1"});
list.push({ book_name: “2”, book_version: "2","book_publication":"2","book_author":"2"});
list.push({ book_name: “3”, book_version: "3","book_publication":"3","book_author":"3"});
$.ajax({
url: '/Book/AddBooks',
type: 'POST',
data: {books:list},
success: function (j) {
},
error: function () {
}
});
</script>
截获的请求发现对象的属性,都自动加了中括号,导致mvc无法绑定到模型上!!
换成对象的形式则能成功绑定
<script>
var list= {};//可以成功进行模型绑定
list[0] = { book_name: “1”, book_version: "1","book_publication":"1","book_author":"1"};
list[1] = { book_name: “2”, book_version: "2","book_publication":"2","book_author":"2"};
list[2] = { book_name: “3”, book_version: "3","book_publication":"3","book_author":"3"};
</script>
控制器如下:
public JsonResult AddBooks(BookInfo[] books){}
mvc数组绑定-jquery ajax的更多相关文章
- Spring MVC Controller与jquery ajax请求处理json
在用 spring mvc 写应用的时候发现jquery传递的[json数组对象]参数后台接收不到,多订单的处理,ajax请求: "}]}]} $.ajax({ url : url, typ ...
- Spring Mvc模式下Jquery Ajax 与后台交互操作
1.基本代码 1)后台控制器基本代码 @Controller @RequestMapping("/user") public class UserController { @Aut ...
- Spring MVC数组绑定
需求:商品批量删除,用户在页面选择多个商品,批量删除. 关键:将页面选择(多选)的商品id,传到controller方法的形参,方法形参使用数组接收页面请求的多个商品id // 批量删除 商品信息 @ ...
- mvc jquery ajax传递数组null问题
mvc jquery ajax传递数, areaIds是个int数组.后台action用list<int>接收.当我想传空值时,先用null传递,结果action收到的AreaIds竟然 ...
- asp.net mvc 接收jquery ajax发送的数组对象
<script type="text/javascript"> $(function () { var obj = { name: "军需品", m ...
- ASP.NET MVC 后台接收集合参数和 jquery ajax 传值
MVC 接收参数数组(集合) 示例样本: public class Person { public string FirstName { get; set; } publi ...
- 用.NET MVC实现长轮询,与jQuery.AJAX即时双向通信
两周前用长轮询做了一个Chat,并移植到了Azure,还写了篇博客http://www.cnblogs.com/indream/p/3187540.html,让大家帮忙测试. 首先感谢300位注册用户 ...
- ASP.NET MVC数组模型绑定
在ASP.NET MVC中使用Razor语法可以在视图中方便地展示数组,如果要进行数组模型绑定,会遇到索引断裂问题,如下示例: <input type="text" name ...
- jquery ajax/post/get 传参数给 mvc的action
jquery ajax/post/get 传参数给 mvc的action1.ActionResult Test1 2.View Test1.aspx3.ajax page4.MetaObjec ...
随机推荐
- ambassador 学习三 限速处理
与认证类似ambassador 也是委托给三方的其他服务进行限速处理 基本的环境安装可以参考相关文档,主要还是qotm 服务 官方参考实现的简单限速服务 --- apiVersion: v1 kind ...
- table中tr间距的设定table合并单元格 colspan(跨列)和rowspan(跨行)
table中的tr的默认display:table-row,虽然可以修改为display:block但是就失去了tr特有的显示效果,如(td自动对齐): 并且在tr中对起设定padding是有用的,可 ...
- CentOS7.2部署FTP
目前Linux大部分部署的FTP服务器都是vsftpd,至于为什么,暂时没什么必要深究. 1.安装vsftpd # yum check-update //检查可更新的程序,也可以不更新直接安装,以防万 ...
- fork()、vfork()、clone()和exec()
前三个和最后一个是两个类型.前三个主要是Linux用来创建新的进程(线程)而设计的,exec()系列函数则是用来用指定的程序替换当前进程的所有内容.所以exec()系列函数经常在前三个函数使用之后调用 ...
- emacs之配置4,颜色插件
来自https://github.com/oneKelvinSmith/monokai-emacs/blob/master/monokai-theme.el monokai-theme.el ;;; ...
- Mac安装appium 问题记录
执行脚本报错:Xcode version [object Object] is not yet supported 原因:Xcode8以上的版本不支持Appium-1.5.3版本
- Bootstrap-CL:页面标题
ylbtech-Bootstrap-CL:页面标题 1.返回顶部 1. Bootstrap 页面标题(Page Header) 页面标题(Page Header)是个不错的功能,它会在网页标题四周添加 ...
- thymeleaf 之 th:each迭代循环对象集合
thymeleaf 之 th:each迭代循环对象集合 2018年02月24日 14:32:31 阅读数:1382 th:each属性用于迭代循环,语法:th:each="obj,iterS ...
- 20165233 预备作业3 Linux安装及学习
Linux学习记录 别出心裁的Linux命令学习法学习总结 (由于我的电脑是Mac,Linux安装省略) 操作系统的功能: 管家婆和服务生 博客中对于这两个词含义的解释为 管家婆:通过进程.虚拟内存和 ...
- 517. Super Washing Machines
▶ 超级洗碗机.给定一个有 n 元素的整数数组,我们把 “将指定位置上元素的值减 1,同时其左侧或者右侧相邻元素的值加 1” 称为一次操作,每个回合内,可以选定任意 1 至 n 个位置进行独立的操作, ...