2010-06-15 1 views
7

Я пытаюсь показать blockui когда Ajax начинается так:Jquery UI блок, когда Ajax начинается

// block when ajax activity starts 
    $(document).ajaxStart($.blockUI({ message: '<h1><img src="busy.gif" /> Just a moment...</h1>' })); 

, а затем я хочу, чтобы остановить это делать

// unblock when ajax activity stops 
    $(document).ajaxStop($.unblockUI); 

Проблема в том, что он не будет загрузить, когда выполняется ajax, что я сделал неправильно? ??

ответ

7

Я думаю, что вам нужно изменить его следующим образом:

$(document).ajaxStart(function() { 
    $.blockUI({ message: '<h1><img src="busy.gif" /> Just a moment...</h1>' }); 
}); 

Если вам нужно передать параметры функции, которую вы хотите связать, вы должны использовать анонимную функцию, а затем вызове метода внутри него. $ .blockUI() возвращает то, что не является вызываемым, поэтому оно не работает, чтобы связать его таким образом.

+0

Для получения дополнительной информации ajaxStart ($. BlockUI ({..})) передает результат вызова blockUI функции ajaxStart. Вышеприведенный ответ передает функцию, которая будет вызываться каждый раз при запуске вызова ajax. –

2

Согласно jQuery documentation:

Всякий раз, когда запрос Ajax собирается быть отправлено, JQuery проверяет, имеются ли какие-либо другие выдающиеся запросы Ajax. Если ни один не выполняется, jQuery запускает событие ajaxStart. Любые и все обработчики, зарегистрированные в методе .ajaxStart(), выполняются в это время.

Возможно, у вас есть другие запросы AJAX, которые препятствуют этому событию от стрельбы?

Смежные вопросы