2012-01-28 4 views

ответ

18

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

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

, который отлично работает! Спасибо. – LordZardeck

+1

Будет ли он поймать даже те, которые не используют jQeury, или это невозможно? – rain01

+1

@ rain01, нет, это поймает только запросы jQuery AJAX. –

2

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

+1

я бы, вероятно, использовать 'ajaxSend' вместо как это срабатывает для всех запросов AJAX (против только 1-ый с' ajaxStart'). см. также http://stackoverflow.com/questions/3735877/whats-the-difference-between-1-ajaxstart-and-ajaxsend-and-2-ajaxstop-and –

+0

Другое примечание: @LordZardeck может захотеть удалить «загрузку» ... ", когда все запросы ajax либо заканчиваются успешно, либо с ошибками. Это нужно сделать, используя '.ajaxError()' и '.ajaxStop()' –

4

По какой-то причине или другой $.ajaxSetup() не работал меня. После прочтения через docs, хотя, я нашел следующее:

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

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

$(document).ajaxStart(function() { 
    console.log('Request Initiated'); 
}); 
$(document).ajaxComplete(function() { 
    console.log('Request Complete'); 
}); 
Смежные вопросы