Недавний переход с Prototype на jQuery, я борюсь с некоторыми основными проблемами.
Я использую в своем приложении несколько AJAX-запросов; для 95% этих запросов я хотел бы, чтобы выполнялись некоторые глобальные события, такие как отображение или скрытие индикатора загрузки. Помимо глобальной функциональности, каждый запрос также должен иметь некоторый пользовательский код, выполняемый после его завершения.
Похоже, что локальные события Ajax переопределяют глобальные события после их установки. Например, см. следующий код:
// global events
$('#loader').bind('ajaxStart', function() {
// in this particular example, the ajaxStart() works fine,
// as it has not been overridden
Loader.enable();
}).bind('ajaxComplete', function() {
// this section will not execute. when the local complete()
// is removed, it will execute just fine
Loader.disable();
} );
// local ajax event
$.ajax({
type: $(element).attr('method'),
url: $(element).attr('action'),
data: $(element).serialize(),
global: 'true',
complete: function(data) {
if (params.target && $('#' + params.target)) {
$('#' + params.target).html(data.responseText);
}
Behaviour.apply();
});
В этом конкретном случае локальное событие complete(), по-видимому, останавливает выполнение глобального события ajaxComplete().
Есть ли способ выполнить как локальные, так и глобальные события ajax?