$ .active будет всегда 1, если вызов ajax выдает непредвиденную ошибку - PullRequest
0 голосов
/ 23 января 2019

У меня есть метод, который блокирует пользовательский интерфейс до получения ответа Ajax. Поэтому добавление 1 секунды к таймеру и блокировка загрузчика до $.active == true, что означает отсутствие ожидающих запросов ajax.

Но проблема здесь в том, что, если любая ошибка jquery error / ajax генерируется и не обрабатывается, $.active всегда будет 1. Приложение заблокировано изображением и никогда не станет истинным. Есть идеи, что является альтернативой или решением этой проблемы?

function startLoader(timeout, delay) {
    loader = setTimeout(function() {
        $.blockUI({
          message: '<img "a.png" alt="Loader"/>',
        });
    }, delay /*loader delay*/ );
    checkPendingRequest();
}

function checkPendingRequest() {
    if ($.active > 0) {
        window.setTimeout(checkPendingRequest, 1000);
    } else {
        stopLoaderAjax();
    }
}

1 Ответ

0 голосов
/ 23 января 2019

Я бы с этим справился, используя функции ajaxStart и ajaxStop

$(document).ajaxStart(function(){
    $.blockUI({
        message: '<img "a.png" alt="Loader"/>',
    });
}).ajaxStop(function(){
    $.unblockUI();
});

Они будут автоматически запускаться в начале и в конце всех вашихAjax вызывает и включает ошибки.

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