0

假设我想使用 $.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
    });
4

2 回答 2

2

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

var fragment = $(result);

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

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

最后,如果您想查看 html:

container.html()
于 2013-07-30T19:46:26.580 回答
1

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

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

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

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

这就是,究竟是什么.load。从 jQuery 源代码:

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

如您所见,它获取响应文本(在您的情况下为结果)将其放入虚拟对象中<div>selector在其中找到(与我们的情况类似#container)。

于 2013-07-31T19:11:25.213 回答