JQuery ловит любую ошибку ajax
Я люблю ловить любой аякс 401 Unauthorised
исключение, но не люблю менять все мои запросы ajax. Есть ли способ изменить его для любого вызова $.ajax (перезаписать любой error
обработчик)?
5 ответов
Вы можете использовать глобальные обработчики событий ajax .ajaxError()
$( document ).ajaxError(function( event, jqxhr, settings, exception ) {
if ( jqxhr.status== 401 ) {
$( "div.log" ).text( "Triggered ajaxError handler." );
}
});
Вы можете сделать что-то вроде этого:
$(function() {
$.ajaxSetup({
error: function(jqXHR, exception) {
if (jqXHR.status === 401) {
alert('HTTP Error 401 Unauthorized.');
} else {
alert('Uncaught Error.\n' + jqXHR.responseText);
}
}
});
});
Это поймает ошибку в любом из ваших ajax
звонки.
$.ajaxSetup()
Функция позволит вам указать глобальные параметры для вызовов Ajax. Будьте осторожны, как и другие призывы к ajaxSetup()
перезапишет глобальные параметры и указанные локальные параметры в ajax()
Метод переопределит глобальные настройки.
Попробуйте использовать .ajaxError()
как глобальный метод http://api.jquery.com/ajaxError/
Чтобы поймать 401
код статуса просто добавь
$.ajaxSetup({
statusCode: {
401: function(err){
console.log('Login Failed.', err.responseJSON);
// or whatever...
}
}
});
на вашу страницу где-то до вызова AJAX.