jQuery Ajax将数组发送到ASP.NET MVC控制器
问题描述:
我很想念这里的东西。我有这样的jQuery JavaScript的:jQuery Ajax将数组发送到ASP.NET MVC控制器
$.ajax({
type: "POST",
url: "/update-note-order",
dataType: "json",
data: {
orderedIds: orderedIds,
unixTimeMs: new Date().getTime()
}
});
凡orderedIds
是JavaScript数字阵列(例如var orderedIds = [1, 2]
)。
的处理Controller
方法是:
[HttpPost]
public void UpdateNoteOrder(long[] orderedIds, long unixTimeMs)
{
...
}
当我在UpdateNoteOrder()
把Debugger.Break()
,orderedIds
是在监视窗口null
。 (unixTimeMs
,然而,有一个数值。)
我如何通过数字阵列通过$.ajax()
这样orderedIds
是我控制器long[]
?
答
只需设置traditional
参数true
:
$.ajax({
type: "POST",
url: "/update-note-order",
dataType: "json",
traditional: true,
data: {
orderedIds: orderedIds,
unixTimeMs: new Date().getTime()
}
});
由于jquery 1.4这个参数的存在是因为机制将对象序列化为查询参数已更改。
答
你需要把orderedId的成参数数组,或控制器将不会看到它
$.param({ orderedIds: orderedIds });
在你的代码:
$.ajax({
type: "POST",
url: "/update-note-order",
dataType: "json",
data: {
orderedIds: $.param({ orderedIds: orderedIds }),
unixTimeMs: new Date().getTime()
}
});
这不起作用。在UpdateNoteOrder中,orderedIds仍然为空。 – AgileMeansDoAsLittleAsPossible 2010-12-09 19:19:04
如果它不起作用,请先检查您的代码,这是直接从jquery文档http://api.jquery.com/jQuery.param/中获取的。您可能想在拒绝答案之前确定您的答案是正确的 – 2010-12-09 19:22:17