0

我想用ajax发送一个列表作为参数,但在我的函数中参数为空。我可以用 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
     });
 });
4

3 回答 3

0

失败可能有几个原因

从代码来看,您似乎是在使用剃须刀。如果这不在剃刀视图(即.cshtml文件)中,您的链接将不正确。

如果链接正确,则假设您的控制器设置正确,则代码将起作用。由于数据不会是您需要FromBody为 userId 参数指定的 URL 的一部分。

public ActionResult DeleteUser([FromBody] userId){
    //implementation
}

或者,您可以将列表附加到 URL

url: '@Url.Action("DeleteUser", "UserManagement")/' + list 

当然在 global.asax 中有一个路由,它将第一个参数发送给 userId

于 2013-10-28T20:17:17.043 回答
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) ... }
于 2013-10-28T19:36:08.097 回答
0

我找到了答案。检查这个网站 http://bestiejs.github.io/json3/

于 2013-11-04T13:32:36.347 回答