JQuery Ajax отправляет ноль на мой контроллер MVC - PullRequest
5 голосов
/ 18 июля 2011

Я не уверен, почему это происходит.У меня есть строковый массив, который должен быть отправлен в действие контроллера, которое ожидает строковый массив.Это мой jQuery:

$.post("/@Model.Controller/@Model.Action", { "choices": ajax }, function (result) {
                $("#label" + "@Model.Id").html(result);
            });

Это действие моего контроллера:

public JsonResult UpdateMultipleType(string[] choices)
    {
        return Json(choices);
    }

Я посмотрел в Firebug и во вкладке «Пост» заголовки прочитали:

Parametersapplication/x-www-form-urlencoded
choices[]   Comedy
choices[]   Thriller
choices[]   Action
choices[]   Adventure

Я отладил и подтвердил, что он запускает UpdateMultipleType и что строковый массив "choices" имеет значение null, когда вызывается это действие.Вызов проходит, но так как мы возвращаем нулевое значение, я получаю ошибку Javascript после завершения вызова.

Я не знаю, почему мое действие контроллера отправляется нулевым, когда ясно, что существует массив с именемварианты пересылаются.

Ответы [ 3 ]

12 голосов
/ 18 июля 2011

вам нужно указать jQuery использовать традиционный способ построения ajax-данных.

поместите это в ваш документ готовым:

jQuery.ajaxSettings.traditional = true;
3 голосов
/ 18 июля 2011

Javascript:

var data = ["a", "b", "c", "d"]; //sample

//Wrap your data ...
var postData = { choices: data };

$.ajax({
    type: "POST",
    url: "/Test/Index", //Your URL here
    data: postData,
    success: function (result) {
        //your code here
    },
    dataType: "json",
    traditional: true
});

Ваш контроллер:

public JsonResult UpdateMultipleType(List<String> choices) [...]

Смотри.

0 голосов
/ 18 июля 2011

Вам нужно украсить действие с атрибутом с помощью [HttpGet] и передать второй параметр для Json как Allowget

[HttpGet]
public JsonResult UpdateMultipleType(string[] choices)
{
   return Json(choices, JsonRequestBehavior.AllowGet);
}

Если варианты являются массивом, вы можете изменить 'Choices' на 'Choices []'

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...