The required parameters in an Ajax error
function are jqXHR, exception
and you can use it like below:
$.ajax({
url: 'some_unknown_page.html',
success: function (response) {
$('#post').html(response.responseText);
},
error: function (jqXHR, exception) {
var msg = '';
if (jqXHR.status === 0) {
msg = 'Not connect.n Verify Network.';
} else if (jqXHR.status == 404) {
msg = 'Requested page not found. [404]';
} else if (jqXHR.status == 500) {
msg = 'Internal Server Error [500].';
} else if (exception === 'parsererror') {
msg = 'Requested JSON parse failed.';
} else if (exception === 'timeout') {
msg = 'Time out error.';
} else if (exception === 'abort') {
msg = 'Ajax request aborted.';
} else {
msg = 'Uncaught Error.n' + jqXHR.responseText;
}
$('#post').html(msg);
},
});
DEMO FIDDLE
Parameters
jqXHR:
Its actually an error object which is looks like this
You can also view this in your own browser console, by using console.log
inside the error
function like:
error: function (jqXHR, exception) {
console.log(jqXHR);
// Your error handling logic here..
}
We are using the status
property from this object to get the error code, like if we get status = 404 this means that requested page could not be found. It doesn’t exists at all. Based on that status code we can redirect users to login page or whatever our business logic requires.
exception:
This is string variable which shows the exception type. So, if we are getting 404 error, exception
text would be simply ‘error’. Similarly, we might get ‘timeout’, ‘abort’ as other exception texts.
Deprecation Notice: The
jqXHR.success()
,jqXHR.error()
, andjqXHR.complete()
callbacks are deprecated as of jQuery 1.8. To prepare
your code for their eventual removal, usejqXHR.done()
,jqXHR.fail()
,
andjqXHR.always()
instead.
So, in case you are using jQuery 1.8 or above we will need to update the success and error function logic like:-
// Assign handlers immediately after making the request,
// and remember the jqXHR object for this request
var jqxhr = $.ajax("some_unknown_page.html")
.done(function (response) {
// success logic here
$('#post').html(response.responseText);
})
.fail(function (jqXHR, exception) {
// Our error logic here
var msg = '';
if (jqXHR.status === 0) {
msg = 'Not connect.n Verify Network.';
} else if (jqXHR.status == 404) {
msg = 'Requested page not found. [404]';
} else if (jqXHR.status == 500) {
msg = 'Internal Server Error [500].';
} else if (exception === 'parsererror') {
msg = 'Requested JSON parse failed.';
} else if (exception === 'timeout') {
msg = 'Time out error.';
} else if (exception === 'abort') {
msg = 'Ajax request aborted.';
} else {
msg = 'Uncaught Error.n' + jqXHR.responseText;
}
$('#post').html(msg);
})
.always(function () {
alert("complete");
});
Содержание:
-
.ajaxError( handler )
- .ajaxError( handler )
- Обсуждение
- Примеры
.ajaxError( handler )Возвращает: jQuery
Описание: Регистрирует обработчик, который вызывается при завершении Ajax запросов с ошибкой. Является Ajax событием.
-
Добавлен в версии: 1.0.ajaxError( handler )
-
handler
Функция которая будет вызвана.
-
Всякий раз при завершении Ajax запроса с ошибкой, jQuery инициирует ajaxError
событие. Все обработчики зарегистрированные при помощи метода .ajaxError()
будут выполнены в этот момент. Заметка: Этот обработчик не будет вызван для кросс-доменных скриптов и кросс-доменных JSONP запросов.
Для наблюдения этого метода в действии, установим обработчик и вызовем Ajax load запрос:
1 2 3 |
|
Добавляем обработчик события к document
:
1 2 3 |
|
Теперь, выполняем Ajax запрос при помощи одного из методов jQuery:
1 2 3 |
|
Когда пользователь кликает по кнопке и Ajax запрос завершается ошибкой, потому что запрашиваемый файл отсутсвует, сообщение показывается внутри элемента с классом log
.
Все обработчики ajaxError
будут выполнены, независимо от того как Ajax запрос был завершен. Если Вам нужно различать запросы между собой, то используйте параметры передаваемые в функцию обработчик. Каждый раз когда обработчик ajaxError
выполняется, ему передается объект события (event), объект XMLHttpRequest
(с версии jQuery выше 1.5, the XHR
object) и объект настроек (ajaxSettings) используемый для создания запроса. Когда возникает HTTP ошибка, четвертый аргумнт (thrownError
) передаст текстовое обозначение HTTP статуса, такие как «Not Found» или «Internal Server Error.» Например, Вы можете ограничить функцию обратного вызова при обработке события связанного с конкретным URL:
1 2 3 4 5 |
|
Примечание:
- Начиная с версии jQuery 1.9, все обработчики для глобальных Ajax событий, включая добавленные методом
.ajaxComplete()
, должны быть прикреплены к todocument
. - Если
$.ajax()
или$.ajaxSetup()
вызваны с параметромglobal
равнымfalse
, то обработчики.ajaxComplete()
не будут вызваны.
Примеры использования
Improve Article
Save Article
Improve Article
Save Article
The ajaxError() method in jQuery is used to specify function to be run when an AJAX request fails.
Syntax:
$(document).ajaxError( function(event, xhr, options, exc) )
Parameter:: This method accepts single parameter function which is mandatory. This function accepts four parameters which are listed below:
- event: This parameter holds the event object.
- xhr: It holds the XMLHttpRequest object.
- options: It contains the used options in AJAX request.
- exc: It holds the JavaScript exception.
The demo.txt file stored on server and it will load after clicking the change content button.
demo.txt
This is GFG.
Example 1: This example changes the content of <p> element, by taking the data from server. When the AJAX request fails due to an error, the page says AJAX request fails..
<!DOCTYPE html>
<
html
>
<
head
>
<
script
src
=
</
script
>
<
script
>
$(document).ready(function() {
$(document).ajaxError(function() {
alert("AJAX request fails.");
});
$("button").click(function() {
$("#paragraph").load("demo.txt");
});
});
</
script
>
</
head
>
<
body
style
=
"text-align:center;"
>
<
div
id
=
"div_content"
>
<
h1
style
=
"color: green;"
>
GeeksforGeeks
</
h1
>
<
p
id
=
"paragraph"
style
=
"font-size: 20px;"
>
A computer science portal for geeks
</
p
>
</
div
>
<
button
>
Change Content
</
button
>
</
body
>
</
html
>
Output:
Example 2: This example changes the content of <h1> element, by taking the data from server. When the AJAX request fails due to an error, the page says AJAX request fails..
<!DOCTYPE html>
<
html
>
<
head
>
<
script
src
=
</
script
>
<
script
>
$(document).ready(function() {
$(document).ajaxError(function() {
alert("AJAX request fails.");
});
$("button").click(function() {
$("#heading").load("demo.txt");
});
});
</
script
>
</
head
>
<
body
style
=
"text-align:center;"
>
<
div
id
=
"div_content"
>
<
h1
id
=
"heading"
style
=
"color: green;"
>
GeeksforGeeks
</
h1
>
<
p
style
=
"font-size: 20px;"
>
A computer science portal for geeks
</
p
>
</
div
>
<
button
>
Change Content
</
button
>
</
body
>
</
html
>
Output:
- Связанные категории:
-
Ajax
» Global Ajax Event Handlers
Returns: jQuery
Прикрепляет функцию, которая выполнится каждый раз при неудачном ajax-запросе.
-
version added: 1.0.ajaxError( handler(event, jqXHR, ajaxSettings, thrownError) )
.ajaxError( handler(event, jqXHR, ajaxSettings, thrownError) )Тип: функция
Функция, которая будет вызвана.
Каждый раз, когда ajax запрос будет выполняться неудачно, jQuery вызовет событие ajaxError
. В этот момент выполняются все обработчики события зарегистрированные через метод .ajaxError()
. Данный обработчик не запускается при вызове кросс-доменных скриптов, а так же кросс-доменных JSONP запросов.
Для проверки работы данного метода в действии, можно создать простой Ajax запрос.
<button class="trigger">Trigger</button> <div class="result"></div> <div class="log"></div>
Прикрепление события к документу:
$(document).ajaxError(function() { $( "div.log" ).text( "Triggered ajaxError handler." ); });
Далее, делаем Ajax запрос с помощью jQuery:
$( "button.trigger" ).on( "click", function() { $( "div.result" ).load( "ajax/missing.html" ); });
После клика по кнопке с классом trigger и неудачном ajax запросе (из-за отсутствия файла), будет отображено лог сообщение.
Начиная с jQuery 1.8, метод .ajaxError()
нужно прикреплять только к document
.
Все обработчики события ajaxError
запускаются после неудачного Ajax запроса. Для того, чтобы отличить множественные запросы, можете воспользоваться дополнительными параметрами, переданными в функцию-обработчик. В функцию обработчик передаётся объект события, объект jqXHR
, а так же объект настроек ajax запроса. При возникновении HTTP ошибки, её текстовой статус (пр. «Not Found», «Internal Server Error») будет записан в четвёртый аргумент. К примеру, выполняем функционал в зависимости от настроек URL на который был сделан Ajax запрос:
$( document ).ajaxError(function(event, jqxhr, settings, exception) { if ( settings.url == "ajax/missing.html" ) { $( "div.log" ).text( "Triggered ajaxError handler." ); } });
Дополнительные заметки:
- Метод
.ajaxError()
не сработает если при вызове$.ajax()
или$.ajaxSetup()
в настройкеglobal
стоит значениеfalse
.
Пример:
Показать сообщение при неудачном Ajax запросе.
$(document).ajaxError(function(event, request, settings) { $( "#msg" ).append( "<li>Error requesting page " + settings.url + "</li>" ); });
Связанные уроки:
-
Используем jQuery. 15 советов.
В данном уроке приводится 15 рекомендаций по работе с библиотекой jQuery. Описанные методы помогают эффективно использовать мощный инструмент разработчика.