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.

Другие вопросы по тегам