f:ajax和jquery` $(document).ajaxStart`不能一起工作?

时间:2011-05-29 06:56:51

标签: javascript jquery ajax jsf-2

我正在尝试为我的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不能一起工作吗?

谢谢!

3 个答案:

答案 0 :(得分:5)

您应该使用jsf.ajax.addOnEvent(callback)来显示加载div。也许addOnError

请参阅documentation

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 将不会触发。