日期:2014-05-16  浏览次数:20343 次

Jquery.Ajax data问题
Jquery代码如下
$.ajax({
   url:"",
   type:"post",
   data:{name:"aaa",roles:["r1","r2"]},
   success:function(ret){
     
   }
});

按照W3C里面对data参数的说明,
引用
"如果为数组,jQuery 将自动为不同值对应同一个名称。如 {foo:["bar1", "bar2"]} 转换为 '&foo=bar1&foo=bar2'。"


实际上在提交数据的时候,这里生成的确实 roles[]=r1和roles[]=r2
这里参数后面多出了个[]。
请问这是怎么回事?要怎么解决这种问题?

------解决方案--------------------
jQuery.param,序列化数据核心是这个方法,出现[]是为了满足php等语言用的,设置jQuery.ajaxSettings.traditional = true; 禁用出现[]

具体说明自己看jQuery.param的说明
jQuery.ajaxSettings.traditional = true; /////

$.ajax({
   url:"",
   type:"post",
   data:{name:"aaa",roles:["r1","r2"]},
   success:function(ret){
     
   }
});