Простой JQuery $ .ajax Json Post для контроллера ASP.NET MVC2: не удается заставить контроллер видеть JSON (или что-то еще) - PullRequest
1 голос
/ 24 октября 2010

Я прошел через десятки ответов, чтобы понять, как разместить данные из $ .ajax в параметре контроллера MVC 2. Вот, насколько я получил:

Кстати, это работает, если вы используете GET, но не работает как POST. Как бы это исправить?

$(document).ready(function () {
    $.ajax({
        type: "POST",
        url: "/Home/Get",
        data: {value:'9/14/2010 12:00:00 AM'},
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        success: function (result) {
            alert(result.value);
        }
    });
});

А это мой контроллер MVC 2:

public class strange
{
    public string value { get; set; }
}

public JsonResult Get(strange o)
{   
    var b = new strange { value = "return" };
    return Json(b, JsonRequestBehavior.AllowGet);
}

После POST значение "o" равно нулю. Изменив POST на GET, значение o будет равно «14.09.2010 12:00:00 AM».

Как мне заставить POST работать с $ .ajax?

Кто-нибудь когда-нибудь публиковал руководство по работе JSON с проверкой данных MVC2 при возврате JSON с клиента? Я знаю, что у них это было в их фьючерсах MVC 2 некоторое время назад.

Ответы [ 2 ]

2 голосов
/ 24 октября 2010

Данные, которые вы отправляете на контроллер ASP.NET MVC, не должны быть закодированы в JSON .Поэтому вы должны просто удалить строку

contentType: "application/json; charset=utf-8",

из запроса $.ajax, и ваша программа будет работать.

1 голос
/ 24 октября 2010

Вам нужно передать JSON контроллеру, и он ищет объект strange, все, что вы в данный момент передаете, это строка с именем value, вместо этого ваш data должен выглядеть так:

{ strange: { value:'9/14/2010 12:00:00 AM'} }

Обратите внимание, что strange не является объектом со свойством value, которое ищет сервер. Но он будет ожидать это как строку, поэтому просто используйте JSON.stringify() (используйте JSON2 , если необходимо для других браузеров, например,

data: JSON.stringify({ strange: { value:'9/14/2010 12:00:00 AM'} }),
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...