JQuery AJAX POSTing массив для ASP.NET MVC Controller
Мне что-то не хватает. У меня есть 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)
{
...
}
Когда я помещаю a Debugger.Break()
в UpdateNoteOrder()
, orderedIds
- null
в окне просмотра. (unixTimeMs
, однако, имеет числовое значение.)
Как передать массив чисел через $.ajax()
таким образом, чтобы orderedIds
был long[]
в моем контроллере?
Ответы
Ответ 1
Просто установите для параметра traditional
значение true
:
$.ajax({
type: "POST",
url: "/update-note-order",
dataType: "json",
traditional: true,
data: {
orderedIds: orderedIds,
unixTimeMs: new Date().getTime()
}
});
Поскольку jquery 1.4 этот параметр существует, поскольку механизм сериализации объектов в параметрах запроса изменился.
Ответ 2
вам нужно будет поменять orderedId в массив param или контроллер не увидит его
$.param({ orderedIds: orderedIds });
в вашем коде:
$.ajax({
type: "POST",
url: "/update-note-order",
dataType: "json",
data: {
orderedIds: $.param({ orderedIds: orderedIds }),
unixTimeMs: new Date().getTime()
}
});