我似乎无法使用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);
}
答案 0 :(得分: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"
答案 1 :(得分:0)
可能没有正确格式化它们。而不是.post()使用.ajax()
$.ajax({
url: '~/myUrl/',
data: {
serialIds: ids,
statusId: statusId
},
type: "POST"
});
答案 2 :(得分:0)
我只是像javascript对象一样初始化数组,它运行良好:
var ids = {};