jQuery Ajax将数组发送到ASP.NET MVC控制器
我在这里错过了一些东西。 我有这个jQuery JavaScript:
$.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) { ... }
当我把一个Debugger.Break()
放在UpdateNoteOrder()
,在Watch窗口中orderedIds
是null
。 (但是, unixTimeMs
有一个数字值。)
如何通过$.ajax()
传递数组数组, orderedIds
在我的控制器中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() } });