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

MVC では、データをシリアル化する特定の方法が必要です。

フラグで使用$ajaxします。traditional

これにより、データが異なる方法でシリアル化されます。たとえば、これは複雑な配列にはうまく対応できないことに注意してください ( 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 に答える