Уловить все запросы ajax в jquery

Я хочу показывать индикатор выполнения "Загрузка" каждый раз, когда отправляется запрос ajax. Можно ли получить уведомление ANYTIME, запрос ajax отправляется с использованием jQuery?

Ответ 1

Вы можете использовать метод $.ajaxSetup() для установки глобальных свойств AJAX, которые будут применяться ко всей странице:

$.ajaxSetup({
    beforeSend: function() {
        // show progress spinner
    },
    complete: function() {
        // hide progress spinner
    }
});

Ответ 2

По той или иной причине $.ajaxSetup() не работал у меня. Прочитав docs, я обнаружил следующее:

Примечание. Глобальные функции обратного вызова должны быть установлены с соответствующими глобальные методы обработчика событий Ajax-.ajaxStart(),.ajaxStop(),.ajaxComplete(),.ajaxError(),.ajaxSuccess(),.ajaxSend() - а не в объекте options для $.ajaxSetup().

Попробуйте $.ajaxStart() и $.ajaxComplete():

$(document).ajaxStart(function () {
    console.log('Request Initiated');
});
$(document).ajaxComplete(function () {
    console.log('Request Complete');
});

Ответ 3

Попробуйте использовать jQuery ajaxStart event