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.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With