Не запускается, потому что ваш обработчик для .ajaxStart()
не зарегистрирован до тех пор, пока запрос ajax уже не пройдет (прошлый, когда он был вызван). .ajaxStop()
также зарегистрирован, но до завершения запроса, поэтому, когда он вернется, он подключен для запуска.
Чтобы исправить это, переместите это перед Первый вызов $.ajax()
:
$("#loading").ajaxStart(function() {
$(this).show();
}).ajaxStop(function() {
$(this).hide();
$("#st-tree-container").show();
});
UPDATE: запуск jQuery 1.9, события AJAX должны быть прикреплены только к документу. http://jquery.com/upgrade-guide/1.9/#ajax-events-should-be-attached-to-document
$(document).ajaxStart(function() {
$("#loading").show();
});
$(document).ajaxStop(function() {
$("#loading").hide();
$("#st-tree-container").show();
});
Запуск jQuery 1.9, события AJAX должны быть прикреплены только к документу.
Обратитесь к руководству по миграции. http://jquery.com/upgrade-guide/1.9/#ajax-events-should-be-attached-to-document
Как и в jQuery 1.9, глобальный AJAX события (ajaxStart, ajaxStop, ajaxSend, ajaxComplete, ajaxError и ajaxSuccess) запускаются только в элементе документа. Измените программу, чтобы прослушивать события AJAX в документе. Например, если код выглядит следующим образом:
$("#status").ajaxStart(function() {
$(this).text("Ajax started");
});
Измените его на это:
$(document).ajaxStart(function() {
$("#status").text("Ajax started");
});
Я не уверен, что это исправит вашу проблему, но обычно я использую debug.info('your message')
в комбинации с консолью Firebug вместо alert()
, так как предупреждение прерывает обработку вашего скрипта, пока вы не отклоните его, тогда как debug.info справедливо ненавязчивый.
Здесь вы можете загрузить реализацию debug.info .