【问题标题】:Get body markup of an AJAX response [duplicate]获取 AJAX 响应的正文标记 [重复]
【发布时间】:2016-09-08 09:21:12
【问题描述】:

我有一个 Ajax 调用:

callAjaxController: function(){
        var url = Routing.generate('ajax_price');

        $.ajax({
            type: "GET",
            url: url,
            cache: false,

            success: function (data, status) {
                // get the <body> markup to replace my actual body page
            }
        })
    },

在我的 Ajax 响应中,我希望获得 &lt;body&gt; 标记来替换我的实际正文页面。

有可能吗?我该怎么做?

【问题讨论】:

    标签: javascript jquery ajax


    【解决方案1】:

    假设您的请求检索到您要使用的body 标记的内容,您可以将当前body() 元素的html() 设置为新内容,如下所示:

    success: function (data, status) {
        $('body').html(data);
    }
    

    或者,如果响应包含&lt;body&gt; 标记及其中的所有内容,请使用replaceWith()

    success: function (data, status) {
        $('body').replaceWith(data);
    }
    

    还请注意,由于您已销毁 DOM 中的所有现有元素,因此如果您有任何在代码中处理的现有事件,则需要使用委托事件处理程序。

    【讨论】:

    • 如果响应是包含 和 元素的完整 html 页面怎么办
    • 在这种情况下,最好使用load() 并在提供给函数的参数中定位要检索的元素。您应该注意,将整个 HTML 页面返回到 AJAX 请求并不是一个好的做法。
    • ajax 正在返回一个完整的 html 页面,但我只想要问题中所说的正文部分。我试过 $(html).find("body") 但由于某种原因不起作用
    猜你喜欢
    • 2011-03-15
    • 2016-04-27
    • 2012-05-02
    • 2020-04-17
    • 2014-10-18
    • 1970-01-01
    • 1970-01-01
    • 2014-07-19
    • 1970-01-01
    相关资源
    最近更新 更多