如何从$ .ajax获得部分响应

时间:2013-07-30 19:42:05

标签: jquery ajax

让我说我想用 $ .ajax

从php页面获取结果,即

$.get("mypage.php", { 'id': "175" }, function(result) {
              console.log(result);
});

在这里,结果将是:

<html>
<body>
...
<div id="container">...</div>
</body>
</html>

使用.load()时我可以指定我感兴趣的元素。即。 $('.mydiv').load("something.html #container")我只能获得容器。我想知道$ .ajax是否可以做类似的事情,所以我可以这样做:

$.get("mypage.php", { 'id': "175" }, function(result) {
                  console.log(result #container); //only gives me the <div id="container"> element
    });

2 个答案:

答案 0 :(得分:2)

我相信jQuery会为你创建一个文档片段:

var fragment = $(result);

然后,您可以在片段中查询您感兴趣的元素:

var container = $('#container', fragment);

最后,如果你想看到html:

container.html()

答案 1 :(得分:1)

实际上它很可能而且不是很复杂。当您向HTML页面发出AJAX请求(就像使用jQuery一样)时,您将获得其内容。

然后,您可以将该内容转换为DOM并在其上运行jQuery选择器。基本上发生的是你创建一个空的根元素,对它运行选择器并提取它。这基本上是.load的作用。

$.get("mypage.php", { 'id': "175" }, function(result) { 
     console.log($(result).find('#container');
});

其内容如下:获取mypage.php?id = 175,当您完成后 - 从该HTML字符串构建实际页面并从中选择#container。

这正是.load所做的。来自jQuery源代码:

 jQuery("<div>").append(jQuery.parseHTML(responseText)).find(selector)

正如您所看到的,它会获得响应文本(您的案例中的结果)将其放入虚拟<div>并在其中找到selector(类似于{{ 1}}在我们的例子中)。