我需要在应用ajax更新后执行某个javascript函数。我试过了jsf.ajax.addOnEvent(ch.ergon.newom.ajaxUpdate)
获得有关请求的信息,但这似乎是在ajax响应到达后执行,但之前它已应用(即:内容已更新)。
如何在JSF-ajax更新内容后执行JavaScript函数?
答案 0 :(得分:2)
实际上,这将被召唤三次。在发送ajax请求之前,一个在ajax响应之后到达,一个在ajax响应被成功处理之后。您需要根据提供的数据参数检查当前状态。您可以在JSF 2.0 specification的表14-4和14-3中找到技术细节。
这是一个启动示例,说明当你想要挂钩所有3种状态时,你的JS函数应该是什么样子。
function ajaxUpdate(data) {
var ajaxStatus = data.status; // Can be 'begin', 'complete' and 'success'.
switch (ajaxStatus) {
case 'begin': // This is called right before ajax request is been sent.
// ...
break;
case 'complete': // This is called right after ajax response is received.
// ...
break;
case 'success': // This is called when ajax response is successfully processed.
// ...
break;
}
}
或者当您想要仅挂起success
状态时:
function ajaxUpdate(data) {
if (data.status == 'success') {
// ...
}
}