как получить код состояния jquery ajax - PullRequest
10 голосов
/ 16 августа 2011

Я хочу знать, как мы можем получить код состояния ajax в jquery.У меня есть этот блок ajax:

$.ajax{
    type: "GET",
    url: "keyword_mapping.html",
    data:"ajax=yes&sf="+status_flag,

    success: callback.success,
    complete: rollup_filters(),
    failure: function(){
        alert("Failure");
    }
    }

Теперь в приведенном выше коде, в случае сбоя, как я могу получить код состояния ajax и некоторое описание этого кода статуса ??

Ответы [ 4 ]

11 голосов
/ 16 августа 2011

Вы хотите использовать опцию error, чтобы зафиксировать это. Например:

error: function (jqXHR, textStatus, errorThrown)
    // Your handler here...
}

Затем вы можете использовать объект jqXHR для получения информации об ошибке.

Из документации :

Для обратной совместимости с XMLHttpRequest объект jqXHR предоставляет следующие свойства и методы:

  • readyState
  • состояние
  • 1022 * его статус *
  • responseXML и / или responseText, когда базовый запрос ответил xml и / или текстом, соответственно
  • setRequestHeader (имя, значение), который отходит от стандарта, заменяя старое значение новым, а не объединяя новое значение со старым
  • getAllResponseHeaders ()
  • getResponseHeader ()
  • преждевременное прекращение ()
3 голосов
/ 16 августа 2011

Во-первых, у вас есть несколько синтаксических ошибок. Выше приведен вызов метода, поэтому он должен следовать $.ajax({ ... }); (с круглыми скобками).

Во-вторых, вы хотите предоставить свойство error как часть объекта, а не сбой ( см. Документы для получения дополнительной информации).

В-третьих, когда вы связываетесь с ошибкой, вам предоставляются три параметра: jqHXR, textState, errorThrow. Эти аргументы предоставят вам подробности неудачного вызова AJAX. (Более конкретно, попробуйте jqXHR.status)

В качестве альтернативы, вы также можете связать с функцией $.ajaxError.


Обновление Чтобы это было более актуально, теперь вы должны следовать API Deferred (начиная с jQuery 1.5), что приведет к привязке к ошибке выглядеть примерно так:

$.ajax({ /* options */ })
  .done(function( data, textStatus, jqXHR ){
    // here you bind to a successful execution.
  .fail(function( jqXHR, textStatus, errorThrown ){
    // Here you can catch if something went wrong with the AJAX call.
  })
  .always(function(){
    // here you can execute code after both (or either) of
    // the above callbacks have executed.
  });
2 голосов
/ 16 августа 2011

Измените ваш обратный вызов сбоя на

error:function (xhr, options, error){
    alert(xhr.status);
    alert(error);
}
1 голос
/ 16 августа 2011

Нет ничего похожего на failure в настройках ajax. Замените ошибку на ошибку, и вы получите 3 аргумента в обратном вызове ошибки. Первый аргумент - это объект xhr, в котором есть свойство status.

$.ajax{
    type: "GET",
    url: "keyword_mapping.html",
    data:"ajax=yes&sf="+status_flag,

    success: callback.success;
    complete: rollup_filters(),
    error: function(jqXHR, textStatus, errorThrown){
         alert(jqXHR.status);
    }
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...