Обязательными параметрами в error
функции Ajax являются, jqXHR, exception
и вы можете использовать их, как показано ниже:
$.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);
},
});
ДЕМО FIDDLE
параметры
jqXHR:
На самом деле это объект ошибки, который выглядит так
Вы также можете просмотреть это в своей собственной консоли браузера, используя console.log
внутри error
функции, например:
error: function (jqXHR, exception) {
console.log(jqXHR);
// Your error handling logic here..
}
Мы используем status
свойство этого объекта, чтобы получить код ошибки, например, если мы получаем статус = 404, это означает, что запрошенная страница не может быть найдена. Его вообще не существует. На основе этого кода состояния мы можем перенаправлять пользователей на страницу входа или на то, что требует наша бизнес-логика.
исключение:
Это строковая переменная, которая показывает тип исключения. Итак, если мы получаем ошибку 404, exception
текст будет просто «ошибка». Точно так же мы можем получить «тайм-аут», «прервать» как другие тексты исключений.
Устаревшие Примечание:jqXHR.success()
, jqXHR.error()
и jqXHR.complete()
обратные вызовы являются устаревшим JQuery 1.8. Для того, чтобы подготовить свой код для их последующего удаления, использовать jqXHR.done()
, jqXHR.fail()
и jqXHR.always()
вместо этого.
Итак, если вы используете jQuery 1.8 или выше, нам нужно будет обновить логику функции успеха и ошибки, например: -
// 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");
});
Надеюсь, поможет!
dataType
не такdatatype
.