Недавно, переключаясь с Прототип на 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?