Как мне отладить JQuery Ajax-запрос? - PullRequest
5 голосов
/ 09 августа 2011

Мой код:

var test = "it isn't working";
var response = $.ajax({
    type: 'GET',
    url: 'jquerydemo.php', //This is in the same site as the page calling this request, so it's not a same-domain error.
    success: function(){
            test = "it's working";
        },
    error: function(){
            alert("Error detected");
        }
 }).responseText;
alert(test);

Я проверил код состояния, и он получил значение 200, и функция ошибок никогда не отключается, но также не работает и функция успеха.Как я уже сказал в своем комментарии, это не ошибка политики того же происхождения.Он просто говорит "это не работает".Что здесь происходит?

Ответы [ 5 ]

12 голосов
/ 30 октября 2012

Попробуйте это:

 error: function(jqXHR, textStatus, errorThrown) {
        console.log(JSON.stringify(jqXHR));
        console.log("AJAX error: " + textStatus + ' : ' + errorThrown);
 }
5 голосов
/ 09 августа 2011

Ваш ajax-вызов асинхронный. Это еще не завершено, когда ваше предупреждение в конце срабатывает. Поместите реальное предупреждение в функцию успеха, и вы должны увидеть свой результат там.

Помните, что вызов ajax просто запускает асинхронный вызов ajax, а затем весь остальной код продолжает выполняться. В примере кода, который вы опубликовали, это означает, что ваш alert(test) вызов выполняется сразу до завершения вызова ajax.

Вы можете ТОЛЬКО проверить результаты вызова ajax из самого обработчика успеха.

var test = "it isn't working";
var response = $.ajax({
    type: 'GET',
    url: 'jquerydemo.php', //This is in the same site as the page calling this request, so it's not a same-domain error.
    success: function(){
            alert("it's working");   // put this here and you will see it 
                                     // if the ajax call is successful
        },
    error: function(){
            alert("Error detected");
        }
 }).responseText;
2 голосов
/ 09 августа 2011

Для отладки подобных вещей я считаю Firebug незаменимым инструментом. Он покажет вам точно ответ от сервера (ошибка 500, ошибка 553, что у вас). Вы можете поместить точки останова в свой код Javascript и пошагово отлаживать его. Firebug работает на Firefox.

Для IE вы можете использовать функцию Developer Tools, которая похожа на Firebug, особенно на IE9, которая кажется более зрелой, чем предыдущие версии Developer Tools для IE7 или IE8.

1 голос
/ 09 августа 2011

Переместите это предупреждение (тест) с конца в функцию успеха вызова ajax. Если это предупреждает, это означает, что код работает, иначе это не так. вы можете только отладить вызов ajax после его успешного возврата.

var test = "it isn't working";
var response = $.ajax({
    type: 'GET',
    url: 'jquerydemo.php', 
    success: function(){
            test = "it's working";
            alert(test);   //It will alert when you ajax call returns successfully.
        },
    error: function(){
            alert("Error detected");
        }
 }).responseText;

Надеюсь, это поможет.

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

Вы можете сделать это как

  var response = $.ajax({
    type: 'GET',
    url: 'jquerydemo.php', 
    success: function(){
           alert("it's working");
        },
    error: function(){
            alert("Error detected");
        }
 }).responseText;

Это будет работать ....

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