6

由于我正在使用TinyMCE(请不要进入“Primefaces 有编辑器”或类似的内容),我需要Javascript在每次调用之前和之后执行一小部分Ajax。我不想为此编辑每个Ajax-call,因为有很多(这样做对于任何未来的维护都是不好的做法)。

Javascript在页面上执行pre-and-post-any -call的最优雅的解决方案是Ajax什么?

注意:我正在compositeTinyMCE-textarea 使用自定义。这个对象的任何事件也足够了。尽管请记住,实际的Ajax-trigger 可能由完全不同的对象调用(尽管仍然可以重新渲染composite)。

4

2 回答 2

8

使用jsf.ajax.addOnEvent处理程序。

jsf.ajax.addOnEvent(function(data) {
    switch(data.status) {
        case "begin":
            // This is invoked right before ajax request is sent.
            break;

        case "complete":
            // This is invoked right after ajax response is returned.
            break;

        case "success":
            // This is invoked right after successful processing of ajax response and update of HTML DOM.
            // In case you're interested in error handling, use jsf.ajax.addOnError handler.
            break;
    }
});

<h:outputScript target="head">只需将其放入<h:body>所需页面中包含的 JS 文件中即可。这将确保它在JSF 自己的包含命名空间之后加载。jsf.jsjsf

于 2013-05-09T14:39:25.257 回答
0

JSF 的标签有一个onevent属性,<f:ajax>用于在 JSF 应用程序中执行 AJAX 任务。基本上,它指定了一个被调用三次的 JavaScript 函数:在发送 AJAX 调用之前、接收到 AJAX 响应之后以及更新 HTML DOM 之后。正是出于这个目的,PrimeFaces 将这些回调分别拆分为onstartonsuccess和。oncompleteonerror

不要重复,您可以在表单重新渲染后如何重新执行javascript函数的答案中找到用法示例?.

于 2013-05-09T14:02:05.930 回答