Опция ошибки JQuery в утилите $ .ajax - PullRequest
34 голосов
/ 18 сентября 2008

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

Используя следующее (в вызове $ .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

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

Ответы [ 5 ]

43 голосов
/ 24 декабря 2009

Я считаю запрос более полезным, чем ошибка.

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

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

22 голосов
/ 18 сентября 2008

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

  • Тайм-аут - когда вы указали превышено время ожидания
  • ошибка - ошибка http, например 404
  • без изменений - по запросу ресурс не был изменен с прошлого раза запрос
  • parsererror - когда ответ xml / json плохой
4 голосов
/ 05 ноября 2009

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

 if (error = "timeout") {

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

 if (error == "timeout") {
1 голос
/ 18 сентября 2008

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

0 голосов
/ 18 сентября 2008

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

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