* ajax更新后执行Javascript *

时间:2011-09-27 08:17:11

标签: javascript ajax jsf jsf-2

我需要在应用ajax更新后执行某个javascript函数。我试过了jsf.ajax.addOnEvent(ch.ergon.newom.ajaxUpdate) 获得有关请求的信息,但这似乎是在ajax响应到达后执行,但之前它已应用(即:内容已更新)。

如何在JSF-ajax更新内容后执行JavaScript函数?

1 个答案:

答案 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') {
        // ...
    }
}