我遗漏了一些东西。我有这个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()
中时,orderedIds
在“监视”窗口中为null
。(但是,unixTimeMs
有一个数值。)
如何通过$.ajax()
传递数字数组,使orderedIds
成为控制器中的long[]
?
发布于 2010-12-10 03:09:52
只需将traditional
参数设置为true
$.ajax({
type: "POST",
url: "/update-note-order",
dataType: "json",
traditional: true,
data: {
orderedIds: orderedIds,
unixTimeMs: new Date().getTime()
}
});
从jquery 1.4开始,这个参数的存在是因为将对象序列化为查询参数的机制发生了变化。
发布于 2010-12-10 03:08:09
您需要将orderedId转换为参数数组,否则控制器将看不到它
$.param({ orderedIds: orderedIds });
在你的代码中:
$.ajax({
type: "POST",
url: "/update-note-order",
dataType: "json",
data: {
orderedIds: $.param({ orderedIds: orderedIds }),
unixTimeMs: new Date().getTime()
}
});
https://stackoverflow.com/questions/4402036
复制相似问题