0

我似乎无法使用 jQuery.post 函数发布数组。它抛出 500 内部服务器错误代码。

这是实际的 jQuery 帖子:

function ChangeAllStatuses(statusId) {    
var ids = [];
var i = 0;
var hiddenIds = $('[name|="serialIds"]');
hiddenIds.each(function () {
    ids[i++] = $(this).val();
});
$.post(
    ChangeAllStatusesURL,
    {
        serialIds: ids,  //this is the array
        statusId: statusId
    },
    function (data) {
        if (data.indexOf('Error') == 0)
            $('#message').html(data);
        else
            location.reload();
    })

}

这是期望发布数据的控制器操作:

[HttpPost]
    public ActionResult ChangeAllStatuses(int[] serialIds, int statusId)
    {
        string result = service.ChangeAllStatuses(serialIds, statusId);
        return Content(result);
    }
4

3 回答 3

0

I simply initialised the array like a javascript object and it worked fine:

var ids = {};
于 2013-10-22T15:50:01.893 回答
0

MVC 需要一种特定的数据序列化方式。

$ajaxtraditional标志一起使用。

这将以不同的方式序列化数据。请注意,这不能很好地处理复杂的数组,例如(来自jQuery.param文档):

// <=1.3.2: ( = traditional)
$.param({ a: [ 2, 3, 4 ] }); // "a=2&a=3&a=4"
// >=1.4:
$.param({ a: [ 2, 3, 4 ] }); // "a[]=2&a[]=3&a[]=4"

// <=1.3.2: ( = traditional)
$.param({ a: { b: 1, c: 2 }, d: [ 3, 4, { e: 5 } ] });
// "a=[object+Object]&d=3&d=4&d=[object+Object]"

// >=1.4:
$.param({ a: { b: 1, c: 2 }, d: [ 3, 4, { e: 5 } ] });
// "a[b]=1&a[c]=2&d[]=3&d[]=4&d[2][e]=5"
于 2013-10-22T15:30:35.137 回答
0

它可能没有正确格式化它们。而不是 .post() 使用 .ajax()

$.ajax({
   url: '~/myUrl/',
       data: {
           serialIds: ids,
           statusId: statusId
       },
       type: "POST"
   });
于 2013-10-22T15:38:50.547 回答