Я не уверен, если ваш ajaxStop обратного вызов действительно вызываются , после вызова Ajax, проверить его с помощью console.log
или просто предупредить его, как это:
$("#logout").live("click",function(){
$(document).ajaxStop(function(){
alert('ajaxStop callback');
window.location.reload();
});
});
, и если она не называется, это означает, что у вас есть один или несколько запросов AJAX на странице, которые не завершены. как вы знаете .ajaxStop()
Зарегистрировать обработчик вызываются, когда все запросы Ajax завершили
вы можете проверить свой браузер инструмент для разработчиков и искать текущие запросы XHR.
, скорее всего, ваша проблема добавить .ajaxStop()
триггер после того как все запросы Ajax закончило, то, так как нет текущего вызова Ajax, он никогда не будет стрелять.
проблема заключается в том, что вы используете несколько продвинутых компонентов jQuery или других компонентов клиента, это может и не произойти. Я имею в виду, что расширенные компоненты обычно всегда используют запросы ajax в фоновом режиме, даже не зная.
другой возможной проблемой может быть запрос ajax, прошедший таймаут, без завершения.
вы должны быть осторожны с опцией global
, так как:
Если $ .ajax() или $ .ajaxSetup() вызывается с глобальным параметром, установленным в ложь, в. Метод ajaxStop() не срабатывает.
, например, если у вас есть АЯКС вызов вроде этого:
$.ajax({
//...
global: false,
// ...
});
или
$.ajaxSetup({
...
global: false,
...
});
$.ajax(...);
ваш метод .ajaxStop() не будет срабатывать.