Я делаю глобальный перехватчик вызовов ajax, чтобы отслеживать некоторые конкретные ответы и предотвращать следующие вызовы.
Локальный вызов:
$.ajax({
contentType: "application/json",
dataType: "json",
method: "PUT",
url: url + '/0'
}).then(function (data) {
console.log('LOCAL: this should not be seen too');
nextUser();
});
Перехватчик
$(document).ajaxStart(function () {
console.log("GLOBAL: start");
}).ajaxSend(function (e, xhr, opts) {
console.log("GLOBAL: send");
}).ajaxError(function (e, xhr, opts) {
console.log("GLOBAL: error");
}).ajaxSuccess(function (e, xhr, opts) {
if (xhr.responseJSON.test) {
$('#upgradeModal').modal('show');
e.preventDefault();
e.stopPropagation();
e.stopImmediatePropagation();
// change status code
xhr.abort();
return false;
}
console.log("GLOBAL: this should not be seen");
}).ajaxComplete(function (e, xhr, opts) {
console.log("GLOBAL: complete");
}).ajaxStop(function () {
console.log("GLOBAL: stop");
});
На самом деле мне нужно добавить ajaxSuccess или ajaxComplete, но другие помещают сюда только для проверки.Результат:
GLOBAL: start
GLOBAL: send
GLOBAL: complete
GLOBAL: stop
LOCAL: this should not be seen too
Таким образом, этот console.log
«ГЛОБАЛЬНО: это не должно быть видно»
не отображается правильно, ноМне не нужно видеть это
«ЛОКАЛЬНОЕ: этого тоже не должно быть видно»
также.Как вы видите, я попробовал все в коде, как «stopImmediatePropagation», но все еще ничего.Можно ли остановить распространение этого вызова ajax?