Успешный обратный вызов не работает должным образом для $ .ajax - PullRequest
2 голосов
/ 29 августа 2011

У меня проблема, похожая на этот стекопоток

Я отправляю список выбранных объектов в метод "Обновление".Это прекрасно работает, проблема в обратном вызове успеха.По какой-то причине этого не происходит.Страница просто мигает один раз.В сетевой вкладке Firebug я вижу вызов URL.Контроллер возвращает bool, поэтому в Response у меня просто true.Но очевидно, что я хочу сделать, это обновить страницу на основе этого bool.Это проект MVC2 - не уверен, имеет ли это отношение к этому.

$.ajax({
    url: "/Update/UpdateAll",
    dataType: 'json',
    type: "POST",
    data: { selected: selected, statusID: statusID },
    success: function (result) {
        if (result) {
            alert('all successful');
            $('#resultsFromUpdate').html("Success");
        }
        else {
            alert('no deal');
            $('#resultsFromUpdate').html("Fail");
        }
    }
});

и UpdateAll метод контроллера:

public bool UpdateAll(string selected, string statusID)
{
...
> update some things
> return true if fine
> return fasle if not
...
}

В этом и заключается смысл использования AJAX, а нетребует пост страницы ... Так что я делаю не так?

Ответы [ 4 ]

4 голосов
/ 29 августа 2011

Должен действительно иметь тип возвращаемого значения JsonResult, поскольку вы указали "json" как то, что должен ожидать метод $ .ajax Кроме того, метод $ .post обычно проще в использовании.

2 голосов
/ 29 августа 2011

Это хорошее место, чтобы углубиться в арсенал бесплатных инструментов отладки, которые есть у веб-разработчиков.

Обратите внимание, что Chrome, Firefox и IE9 предоставляют инструменты для разработчиков (просто нажмите F12 для IE9).Они позволяют пошагово пройти по коду и наблюдать за возвращаемыми переменными.

Вы также можете использовать fiddler для проверки содержимого, передаваемого между браузером и visual studio.

Обратите внимание, что службы WCF с поддержкой JSON, написанные в ASP.NET 3.5, возвращают объект, возвращаемое значение которого является элементом данных d.

Вы можете попробовать это:

$.ajax({
    url: "/Update/UpdateAll",
    dataType: 'json',
    type: "POST",
    data: { selected: selected, statusID: statusID },
    success: function (result) {
        /* NOTE: Not checking result, but result.d */
        if (result.d) {
            alert('all successful');
            $('#resultsFromUpdate').html("Success");
        }
        else {
            alert('no deal');
            $('#resultsFromUpdate').html("Fail");
        }
    }
});

Если я угадал правильно, я покупаю лотерейный билет: -)

0 голосов
/ 29 августа 2011

Здесь много вопросов о ajax / mvc. Вы должны указать, что вы возвращаете из вашего метода контроллера. Проверьте ответ Дарина на эту тему: Ошибка выполнения вызова Ajax из приложения ASP.NET MVC2

0 голосов
/ 29 августа 2011

Мой совет - использовать Firebug или другой инструмент отладки Javascript и / или указывать обратный вызов «error» хотя бы с «alert» в нем, кроме «success». Возможно, тип MIME, отправленный сервером, не совпадает, или может быть какая-то другая причина.

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