Возвращение Json из контроллера, но безуспешно - PullRequest
2 голосов
/ 12 октября 2011

Я успешно отправляю сообщение на свой контроллер со следующим кодом, однако, успех никогда не сводится только к ошибке.Что я делаю не так?

JS:

$.ajax({
        url: '/Home/Subscribe',
        type: 'POST',
        dataType: 'json',
        data: { email: $('#sube').val() },
        success: function (data) {
            // get the result and do some magic with it
            alert(data.foo);

        },
        error: function (XMLHttpRequest, textStatus, errorThrown) {
            alert(textStatus);
        }
    });

Контроллер:

[HttpPost]
    public JsonResult Subscribe(string email)
    {
        return Json(new { foo = "bar", baz = "Blech" });
    }

Ответы [ 3 ]

2 голосов
/ 12 октября 2011

Ниже приведен мой фрагмент кода jQuery ajax, который работает.Ваш контроллер выглядит правильно.Я предполагаю, что вы убедились, что на самом деле вызывается с помощью точки останова.

var p = {
    email: $('#sube').val()
};


$.ajax({
    url: '@Url.Action("Subscribe", "Home")'
    type: 'POST',
    data: JSON.stringify(p),
    dataType: "text json",
    contentType: "application/json", 
    success: function (data) {
        // get the result and do some magic with it
        alert(data.foo);

    },
    error: function (XMLHttpRequest, textStatus, errorThrown) {
        alert(textStatus);
    }
});
2 голосов
/ 12 октября 2011

В IE нажмите F12, чтобы открыть инструменты разработчика. Перейдите на вкладку «Сеть» и нажмите «Запустить Profiler». Отправьте запрос на действие «Подписаться» - в списке ниже вы увидите подробности отправленного запроса и возвращенного кода состояния. Дважды щелкните по запросу, чтобы увидеть подробности - вы можете увидеть тело вашего ответа. Если запрос не выполнен с ошибкой сервера, вы увидите эту ошибку в теле вашего ответа.

2 голосов
/ 12 октября 2011

Одна неправильная вещь, которую я вижу в вашем коде, заключается в том, что вы жестко закодировали URL:

url: '/Home/Subscribe'

Вы никогда не должны этого делать.При создании URL-адресов в приложении ASP.NET MVC всегда следует использовать помощники по URL:

url: '@Url.Action("Subscribe", "Home")'

Также вы говорите, что обратный вызов ошибки всегда срабатывает, но вы не сказали то, что наблюдали в FireBug или Chrome.Панель инструментов разработчика, когда вы пытались проанализировать запрос AJAX.Если бы вы сделали это, вы бы увидели точную причину сбоя для запроса, потому что вы бы увидели, какой запрос отправляется на сервер и какой ответ сервер отправляет обратно клиенту.

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