Подтвердить что ты не робот

Параметр ошибки JQuery в утилите $.ajax

Документация указывает, что функция error: option будет доступна: экземпляр XHR, строка сообщения состояния (в данном случае всегда ошибка) и необязательный объект исключения, возвращенный из экземпляра XHR (книга: JQuery в действии)

Используя следующее (в вызове $.ajax), я смог определить, что у меня был "parsererror" и "timeout" (поскольку я добавил ошибку timeout: option)

error: function(request, error){}

Какие другие вещи вы оцениваете в опции ошибки? включаете ли вы дополнительный объект исключения?

РЕДАКТИРОВАТЬ: один из ответов указывает на все ошибки возврата... было бы полезно узнать больше о том, что имеет значение (для отладки) в экземпляре XHR и объекте исключения

Это полный вызов $.ajax:

$.ajax({
 type: "post",
 url: "http://myServer/cgi-bin/broker" ,
 dataType: "text",
 data: {
 '_service' : 'myService',
 '_program' : 'myProgram',
 'start' : start,
 'end' : end
 },
 beforeSend: function() {
  $("#loading").removeClass("hide");
 },
 timeout: 5000,
 error: function(request,error) {
  $("#loading").addClass("hide");
  if (error == "timeout") {
   $("#error").append("The request timed out, please resubmit");
  }
  else {
   $("#error").append("ERROR: " + error);
  }
  },
  success: function(request) {
   $("#loading").addClass("hide");
   var t = eval( "(" + request + ")" ) ;
  } // End success
}); // End ajax method

Спасибо за ввод

4b9b3361

Ответ 1

Посмотрев исходный код jQuery, есть четыре возвращенных статуса, в дополнение к Успех:

  • таймаут - когда ваш указанный превышение тайм-аута
  • ошибка - ошибка HTTP, например 404
  • немодифицированный - при запросе ресурс не был изменен с последнего запрос
  • parsererror - когда ответ xml/json плохой

Ответ 2

Я нахожу запрос более полезным, чем ошибка.

error:function(xhr,err){
    alert("readyState: "+xhr.readyState+"\nstatus: "+xhr.status);
    alert("responseText: "+xhr.responseText);
}

xhr - это XmlHttpRequest.
readyState: 1: загрузка, 2: загрузка, 3: интерактивная, 4: полная.
статус - это номер статуса HTTP, т.е. 404: не найден, 500: ошибка сервера, 200: нормально.
responseText - это ответ от сервера - это может быть текст или JSON из веб-службы или HTML с веб-сервера.

Ответ 3

Это в стороне, но я думаю, что есть ошибка в коде, который вы отправили. Строка:

 if (error = "timeout") {

должно иметь в нем больше знаков равенства:

 if (error == "timeout") {

Ответ 4

Второй аргумент, передаваемый вашей функции ошибки, будет либо строкой "тайм-аут", либо "parserror" "error" или "notmodified". Третий будет объектом исключения. Этот объект может быть полезен для отладки.

Ответ 5

Вы уверены, что ответ правильный? Ошибка синтаксического анализа означает, что есть ошибка в том, что данные выравниваются в строке var t = eval( "(" + request + ")" ) ;