f: ajax и jquery `$ (document) .ajaxStart` не работают вместе? - PullRequest
3 голосов
/ 29 мая 2011

Я пытаюсь получить загрузочный div для моего ajaxified веб-сайта.использование тега f:ajax в JSF 2.0 для добавления ajax на сайт и «попытка» сделать показ загрузки в div с использованием функции jQuery $(document).ajaxStart.

Часть кода jQuery выглядит следующим образом:

$(document).ajaxStart(function(){
    console.log("ajax start");
  $('#ajaxBusy').show(); 
}).ajaxStop(function(){
    console.log("ajax end");
  $('#ajaxBusy').hide();
});

Функции журнала никогда не вызываются.Есть идеи почему?Не работают ли JSF ajax и javascript ajax вместе?

Спасибо!

Ответы [ 3 ]

5 голосов
/ 29 мая 2011

Вы должны использовать jsf.ajax.addOnEvent(callback) для отображения загрузки div. Может быть addOnError тоже.

См. Документацию

jsf.ajax.addOnEvent(statusUpdate);
...
var statusUpdate = function statusUpdate(data) {
...
}

Вам нужно будет работать с data.status

  • begin: до отправки запроса
  • complete: запрос получен
  • success: запрос успешно обработан (без ошибок)

Примеры использования этого API:

1 голос
/ 08 ноября 2011

Это правильно.Разные реализации JSF могут использовать разные механизмы AJAX, и jQuery ajaxStart / ajaxStop применяется только к тем компонентам, которые направляют запросы AJAX через функцию jQuery $ .ajax.

Напротив, если вы используете Primefaces, события jQuery ajaxStart / ajaxStop будут запускаться, а jsf.ajax.onEvent не будет запускаться.

1 голос
/ 29 мая 2011

Сокращение $ может быть проблемой при использовании jsf, библиотек компонентов и jquery.

Попробуйте вызвать jQuery следующим образом:

jQuery(document).ajaxStart(function(){ ... });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...