<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的更多相关文章

  1. Spring MVC Controller与jquery ajax请求处理json

    在用 spring mvc 写应用的时候发现jquery传递的[json数组对象]参数后台接收不到,多订单的处理,ajax请求: "}]}]} $.ajax({ url : url, typ ...

  2. Spring Mvc模式下Jquery Ajax 与后台交互操作

    1.基本代码 1)后台控制器基本代码 @Controller @RequestMapping("/user") public class UserController { @Aut ...

  3. Spring MVC数组绑定

    需求:商品批量删除,用户在页面选择多个商品,批量删除. 关键:将页面选择(多选)的商品id,传到controller方法的形参,方法形参使用数组接收页面请求的多个商品id // 批量删除 商品信息 @ ...

  4. mvc jquery ajax传递数组null问题

    mvc jquery ajax传递数,  areaIds是个int数组.后台action用list<int>接收.当我想传空值时,先用null传递,结果action收到的AreaIds竟然 ...

  5. asp.net mvc 接收jquery ajax发送的数组对象

    <script type="text/javascript"> $(function () { var obj = { name: "军需品", m ...

  6. ASP.NET MVC 后台接收集合参数和 jquery ajax 传值

    MVC 接收参数数组(集合)   示例样本:   public class Person {      public string FirstName { get; set; }      publi ...

  7. 用.NET MVC实现长轮询,与jQuery.AJAX即时双向通信

    两周前用长轮询做了一个Chat,并移植到了Azure,还写了篇博客http://www.cnblogs.com/indream/p/3187540.html,让大家帮忙测试. 首先感谢300位注册用户 ...

  8. ASP.NET MVC数组模型绑定

    在ASP.NET MVC中使用Razor语法可以在视图中方便地展示数组,如果要进行数组模型绑定,会遇到索引断裂问题,如下示例: <input type="text" name ...

  9. jquery ajax/post/get 传参数给 mvc的action

    jquery ajax/post/get 传参数给 mvc的action1.ActionResult Test1    2.View  Test1.aspx3.ajax page4.MetaObjec ...

随机推荐

  1. asp.net(C#)链接Oracle连接字符串

    在NET环境中链接Oracle数据库有两种组建链接方式: 1)使用OleDB组件是通过Oracle OleDB驱动程序(OraOLEDB.dll)连接和访问Oracle数据库2)使用System.Da ...

  2. postman 获取时间戳的方法 和md5加密的方法

    获取时间戳方法: postman.setGlobalVariable("timestamp",Math.round(new Date().getTime()));   这整句是获取 ...

  3. Bootstrap-CL:列表组

    ylbtech-Bootstrap-CL:列表组 1.返回顶部 1. Bootstrap 列表组 本章我们将讲解列表组.列表组件用于以列表形式呈现复杂的和自定义的内容.创建一个基本的列表组的步骤如下: ...

  4. [转]Aspose.Words.dll 将 Word 转换成 html

    用于网站上,上传 Word 文档后显示文档内容(可看作在线阅读).代码适用于 .net 2.0 或以上版本 (使用的未注册 Aspose.Words.dll 并尝试消除试用标志) 下载地址 strin ...

  5. Splunk安装部署基础篇

    Splunk安装(以4.3.4版本为例) 下载splunk软件包,并解压,直接启动即可. --Linux-x86_64.tgz -C /optcd /opt/splunk/bin./splunk st ...

  6. Sql Server-使用Sql Server自带的分词功能实现字段关键词提取(分词能力很低,慎用)

    “创建全文索引 启动服务 在SQL Server配置管理工具中,找到'SQL Full-text Filter Daemon Launcher'服务用本地用户启动. 创建全文目录 打开需要创建全文目录 ...

  7. 接口自动化(二)--操作Excel获取需要数据

    这一部分的内容记述一下对Excel表格的操作,本实战中的测试用例是由Excel来管理的,因此操作Excel是重要的一部分. 再次贴出这张图,所有的测试用例都在这个sheet内,请求数据真实存放在jso ...

  8. 1.2 auth2.0

    多个应用 入sina  qq  msn  豆瓣 等 在手机登录时或终端登录时如果统一可以根据硬件做 gettid()-为了保证唯一性:方案一:      事先生成唯一验证码:使用一个isue 设置为1 ...

  9. WPF 出现“调用线程无法访问此对象,因为另一个线程拥有该对象”

    引起这种错误多半是由于在非UI线程刷新界面,解决此问题可以使用Dispatcher this.Dispatcher.Invoke(new Action(() => { UpdateUI(stri ...

  10. 表单的编辑添加和删除 .removeClass() .append() .preAll() .attr('b') document.createElement()

    1.$(..).removeClass()   去除属性 2$(..).append 把内容加在后面 3.$(..).preAll()  前面所有的兄弟属性 4.$(..).attr('b')  属性 ...