我想用ajax发送一个列表作为参数,但是在我的函数参数中是null。我可以用json解决这个问题,但IE 7不支持json。这是我的代码。我怎么能解决这个????
$(function () {
$('#DeleteUser').click(function () {
var list = [];
$('#userForm input:checked').each(function () {
list.push(this.id);
});
$.ajax({
url: '@Url.Action("DeleteUser", "UserManagement")',
data: {
userId: list
},
type: 'POST',
success: function (result) {
alert("success");
},
error: function (result) {
alert("error!");
}
}); //end ajax
});
});
答案 0 :(得分:0)
添加Douglas Crockford着名的json2.js,并使用特征检测来polyfill json序列化以实现兼容性
https://github.com/douglascrockford/JSON-js
来自文档:
JSON.stringify(value, replacer, space)
value any JavaScript value, usually an object or array.
replacer an optional parameter that determines how object
values are stringified for objects. It can be a
function or an array of strings.
space an optional parameter that specifies the indentation
of nested structures. If it is omitted, the text will
be packed without extra whitespace. If it is a number,
it will specify the number of spaces to indent at each
level. If it is a string (such as '\t' or ' '),
it contains the characters used to indent at each level.
建议改变代码:
{ ... data: JSON.stringify(list) ... }
答案 1 :(得分:0)
可能有一些原因会导致失败
从代码中看起来你是一个使用剃须刀。如果这不是剃刀视图(即.cshtml
文件),则链接将不正确。
如果链接正确,则代码可以正常运行,假设您的控制器设置正确。由于数据不是URL的一部分,因此您需要为userId参数指定FromBody
。
public ActionResult DeleteUser([FromBody] userId){
//implementation
}
或者您可以将列表附加到URL
url: '@Url.Action("DeleteUser", "UserManagement")/' + list
当然在global.asax中有一个路由,它将第一个参数发送给userId
答案 2 :(得分:0)
我找到答案。检查此网站http://bestiejs.github.io/json3/