Использование .ajaxError И установка функции ошибки в $.ajax()

В настоящее время я переписываю все мои вызовы ajax для использования метода jquery (намного более чистый код!) и объявил функцию ajaxError по умолчанию, показанную ниже:

$(document).ajaxError(function(event, request, settings){
  alert("there was some error.. boo");
});

Мой вызов ajax с его собственной определенной функцией ошибки, для которой я не хочу, чтобы по умолчанию было выполнено следующее:

$.ajax({ url: url,
    success: function(data){
        // do something
    },
    error: function (r, textStatus, errorThrown) { 
        // let do something here regarding the error
        alert("Oh no! Something went terribly wrong in here!");
        // just trying this to see if it will stop any other events (ie default ajaxError)
        event.stopImmediatePropagation();
    }
});

Однако теперь у меня есть несколько вызовов ajax, где я хочу объявить функцию ошибки в вызове ajax. Я надеялся, что, объявив функцию ошибки в вызове ajax, он заменит вызов по умолчанию, который я определил. Но, похоже, это не так, так как я продолжаю сначала получать свой вызов функции функции ajax, тогда я также вижу, что приведенный выше код выполняется.

Я попытался вызвать event.stopImmediatePropagation() из моей функции ошибки ajax, надеясь, что он остановит дальнейшие события (например, событие ошибки по умолчанию), но ничего не сделал, кроме как сказать мне в firefox, что "событие" было undefined.

Любые идеи? Я надеялся, что мне не придется проходить и определять функцию ошибки для КАЖДОГО вызова ajax. Если это произойдет, я сделаю это. Просто подумал, что я спрошу.

Спасибо, Matt

Ответ 1

Здесь global опция на $.ajax() для этого, который определяет, следует ли выполнять эти глобальные обработчики событий AJAX, просто установите его на false, например:

$.ajax({ 
    url: url,
    global: false,
    success: function(data){
        // do something
    },
    error: function (r, textStatus, errorThrown) { 
        alert("Oh no! Something went terribly wrong in here!");
    }
});