AJAX прекратить распространение следующих звонков - PullRequest
0 голосов
/ 26 сентября 2018

Я делаю глобальный перехватчик вызовов 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?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...