Параметр ошибки 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
Спасибо за ввод
Ответы
Ответ 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 + ")" ) ;