jQuery Ajax POSTing array to ASP.NET MVC Controller
I'm missing something here. I've got this jQuery JavaScript:
$.ajax({
type: "POST",
url: "/update-note-order",
dataType: "json",
data: {
orderedIds: orderedIds,
unixTimeMs: new Date().getTime()
}
});
Where orderedIds
is a JavaScript number array (e.g. var orderedIds = [1, 2]
).
The handling Controller
method is:
[HttpPost]
public void UpdateNoteOrder(long[] orderedIds, long unixTimeMs)
{
...
}
When I put a Debugger.Break()
in UpdateNoteOrder()开发者_开发技巧
, orderedIds
is null
in the Watch window. (unixTimeMs
, however, has a numeric value.)
How do I pass the number array through $.ajax()
such that orderedIds
is a long[]
in my controller?
Just set the traditional
parameter to true
:
$.ajax({
type: "POST",
url: "/update-note-order",
dataType: "json",
traditional: true,
data: {
orderedIds: orderedIds,
unixTimeMs: new Date().getTime()
}
});
Since jquery 1.4 this parameter exists because the mechanism to serialize objects into query parameters has changed.
you'll need to turn orderedId's into a param array, or the controller won't see it
$.param({ orderedIds: orderedIds });
in your code:
$.ajax({
type: "POST",
url: "/update-note-order",
dataType: "json",
data: {
orderedIds: $.param({ orderedIds: orderedIds }),
unixTimeMs: new Date().getTime()
}
});
精彩评论