【问题标题】:Ajax response how to Reload JQuery(JavaScript)Ajax 响应如何重新加载 JQuery(JavaScript)
【发布时间】:2012-02-17 22:26:04
【问题描述】:

我们的应用程序是 JSF2 框架,当我们在某些场景中进行 Ajax 调用时,当 Ajax 响应从服务器返回时,我们需要重新调用 java-script(jQuery-for UI style)。

当 Ajax 响应返回时,没有调用 javascripts..

有什么办法可以启用吗?

【问题讨论】:

    标签: javascript ajax jquery jsf-2


    【解决方案1】:

    要么使用jQuery.delegate()jQuery.on()(取决于jQuery 版本)来代替对HTML DOM 树中的每个更改重新应用函数,例如:

    jQuery(selector).on(eventName, callbackFunction);
    

    让JSF通过jsf.ajax.addOnEvent指定一个JSF ajax事件处理程序来重新调用JS函数,例如:

    jsf.ajax.addOnEvent(function(data) {
        if (data.status == "success") { // Can be 'begin', 'complete' and 'success'.
            // Re-invoke your JS functions here.
        }
    });
    

    【讨论】:

    • 感谢 Balucs...Ajax 的 evenName 是 Load 吗?jQuery(selector).on("load", callbackFunction);
    • 例如,是的。它只是标准的 HTML DOM 事件名称。您只需要记住 load 事件不会在 ajax 响应上调用。您宁愿修改您在现有 onload 函数中所做的任何事情。
    • 只是为了澄清,所以如果输入“load”事件,这个jQuery.on将不会被调用。
    • 不,因为它只触发了一次。你需要addOnEvent() 这里。或者使用on() 在您当前的onload 处理函数内部 执行的任何操作上。例如。 jQuery(document).ready(function() { jQuery(someSelector).click(someCallback); }); 应该是 jQuery(document).ready(function() { jQuery(someSelector).on("click", someCallback); });
    • 你说的是jsf.ajax.addOnEvent()?您需要确保在自动包含的 JSF JavaScript 之后 触发它。把它放在$(document).ready() 什么的。
    猜你喜欢
    • 1970-01-01
    • 2012-08-25
    • 2013-09-29
    • 2020-05-28
    • 2013-07-10
    • 2013-06-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多