我正在尝试为我的ajaxified网站获取'loading'div。
使用JSF 2.0的f:ajax
标记向网站添加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不能一起工作吗?
谢谢!
答案 0 :(得分:5)
您应该使用jsf.ajax.addOnEvent(callback)
来显示加载div。也许addOnError
。
jsf.ajax.addOnEvent(statusUpdate);
...
var statusUpdate = function statusUpdate(data) {
...
}
您需要使用data.status
begin
:在发送请求之前complete
:已收到请求success
:请求已成功处理(无错误)使用此API的示例:
答案 1 :(得分:1)
如果使用jsf,组件库和jquery,速记$
可能是问题。
尝试以这种方式调用jQuery:
jQuery(document).ajaxStart(function(){ ... });
答案 2 :(得分:1)
这是对的。不同的JSF实现可能使用不同的AJAX引擎,而jQuery ajaxStart / ajaxStop仅适用于通过jQuery $ .ajax函数路由AJAX请求的那些组件。
相反,如果您使用的是Primefaces,则jQuery ajaxStart / ajaxStop事件将触发,而jsf.ajax.onEvent 将不会触发。