Я пытаюсь отправить некоторые данные через JSON в действие контроллера MVC:
Почему-то это работает:
var items = [];
$("input:checked").each(function () { items.push($(this).val()); });
//This works
$.ajax({
type: "POST",
url: url,
data: { listofIDs: items, personID: personID},
dataType: "json",
traditional: true,
success: function() {
//Rebind grid
}
});
//This listofIDs is ALWAYS null !? (longhand for `$.getJSON` ?)
$.ajax({
url: url,
dataType: 'json',
data: { listofIDs: items, personID: personID },
success: function () {
//Rebind grid
}
});
Так почему вверху он работает, а внизу всегда равен нулю? Тот же код используется для сборки items
!?
изменить: метод контроллера
public ActionResult AddJson(List<int> listofIDs, int personID)
{
if (listofIDs==null || listofIDs.Count < 1)
return Json(false, JsonRequestBehavior.AllowGet);
...
//Add something to database
//Return true if suceeed, false if not
}
edit: поэтому я решил его, просто превратив массив в строку и отправив ее таким образом. Таким образом я смог отправить больше, чем просто переменную массива.
var items = $(':input:checked').map(function () { return $(this).val();}).toArray();
var stringArray = String(items);
$.ajax({
url: url,
dataType: 'json',
data: { listOfIDs: stringArray, personID: personID },
success: function () {
//rebind grid
}
});
Обратите внимание, что тип POST
указывать не нужно.
type: POST
в $ .ajax и добавил[HttpPost]
в метод контроллера, но массив все еще был нулевым. 22.08.2011