为什么我不能使用此AJAX响应的一部分?

时间:2016-05-18 19:18:55

标签: javascript jquery html ajax

我有一个jQuery ajax调用:

$.ajax ({
    url : 'foo/bar/',
    success: function(data) {
        console.log(data);

        var newHeaderText = $(data).find('#header-text').text();
        $("#header-text").text(newHeaderText);

        var newContent = $(data).find('#content').html();
        console.log(newContent);
        $("#content").html(newContent);
    }
});

记录的data成功显示目标页面的完整html。

header-text部分按预期工作。

然而,console.log(newContent)会返回undefined。如果没有在这里发布foo/bar/的整个html,那么就可以说我非常确定content中有一个id为data的div,并且它有很多子元素。

为什么我尝试抓取一个页面的内容并将其放入另一个无法正常工作的页面的内容中。这对我来说尤其令人困惑,因为header-text似乎工作正常。

1 个答案:

答案 0 :(得分:3)

您可以尝试使用$.parseHTML

var newContent = $($.parseHTML(data)).find('#content');

如果#content是顶级元素,那么上面的代码可能仍然会错过它。然后,您可以通过首先在容器中加载HTML来解决此问题,然后在其中找到元素:

var newContent = $('<div>').append($.parseHTML(data)).find('#content');