起初我认为traditional:true,可有可无,但是后来不用traditional的时候,发现后台无法获取selectusers的值,那么可以肯定的是traditional默认值是false.
当提交的参数是数组( {selectusers:[value,value,value]} ),
如果是false的话,则提交时会是selectusers[]=value&selectusers[]=value
name nihao
list[] [3]
0 x
1 y
2 z
ckee o
m2[name] zzzzz
m2[list][] [3]
0 x1
1 y1
2 z1
m2[ckee] o1
如果设置成true,则提交时会是selectusers=value&selectusers=value
name nihao
list [3]
0 x
1 y
2 z
ckee o
m2 [object+object]
这样后台就能用string[] ids=request.getparametervalues(selectusers); 获取到值。
官方文档的解释如下:
traditional
类型:boolean
如果你想要用传统的方式来序列化数据,那么就设置为 true。
set this to true if you wish to use the traditional style of param serialization
前台js
var obj2 = {
"name": "nihao",
"list": ["x", "y", "z"],
"ckee": "o",
"m2": {
"name": "zzzzz",
"list": ["x1", "y1", "z1"],
"ckee": "o1"
}
}
$.ajax({
type: "post",
url: "/home/submitform",
data: obj2,
datatype: "text",
async: false,
traditional: true,
success: function (data) {
var rows = data.rows;
}
});
$.ajax({
type: "post",
url: "/home/submitform",
data: obj2,
datatype: "text",
async: false,
traditional: false,
success: function (data) {
var rows = data.rows;
}
});
后台
[httppost]
public string submitform(mymode request)
{
if (request != null)
{
//
}
return "操作成功。";
}
以上就是jquery ajax 传递数组到后台失败的问题的详细内容。