0

如何使用AJAX请求网页上指定元素?
我使用

$.get($(this).attr('href'), function (data) {
    var result = $(data).find('#content');
    console.log($(data));
    content.html(result);
});

这样的写法
获取到的data是这样的:

<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
<meta name=viewport content="width=devide-width,initial-scale=1.0,user-scalable=0">
<meta name="author" content="lcz970" />
<meta name="Copyright" content="Copyright lcz970 All Rights Reserved." />
</head>
<body>
<div id="content" class="content">
<div id="userbar" class="videotitle" style="background-color:#D04D74;font-size:16px;">
<form name="input" method="get">
<p class="userbarcontent">获取新视频:h<input type="tel" id="hid" name="hid" placeholder="C站投稿号(只填写“h”后面的数字)" oninput="value=decodeURIComponent(value).replace(/[^\d]/g,'')" style="width:220px;ime-mode:Disabled"> <input type="submit" value="解析" onclick="gohid();return false;"></p></form></div><br/>
<div style="padding-left:10px">在上面输入c站h号,或复制c站页面地址,然后点击“解析”。<br/><br/><p style="font-size:12px;color:#555;">不点击输入框也可以输入</p>
</div>
<input type="button" onclick="location.href='all.php';" style="margin-left:25px" value="看看缓存视频列表">
</div>
<div style="display:none"><script src="http://s95.cnzz.com/z_stat.php?id=1256854279&web_id=1256854279" language="JavaScript"></script></div>
</body>
</html>

在控制台输出的返回值$(data)中会包含 div#content.content,但实际是取不到的 输出 $(data).find('#content') 的结果是length为0
content变量是一个div元素

这边是$data

0
:
text
1
:
meta
2
:
text
3
:
meta
4
:
text
5
:
meta
6
:
text
7
:
meta
8
:
text
9
:
meta
10
:
text
11
:
meta
12
:
text
13
:
link
14
:
text
15
:
link
16
:
text
17
:
title
18
:
text
19
:
style
20
:
text
21
:
script
22
:
text
23
:
div#content.content
24
:
text
25
:
div
26
:
text
length
:
27
__proto__
:
Object(0)
夕尘 60
2018-01-28 提问
3 个回答
1

已采纳
$.get($(this).attr('href'), function (data) {
    var html=$("<code></code>").append(data);
    var result = html.find('#content');       
    content.html(result);
});
0

得看返回的内容是不是完整的 HTML,有可能在 $(data) 的时候解析错误。看到返回的结果,我觉得应该是类似的问题,建议你把 <body></body> 以外的部分过滤掉试试。

0

我一比较喜欢这样处理

const $data = $(data);
let content = $data.filter("#content");
if (!content.length) {
    content = $data.find("#content");
}

当然,如果确定 #content 是 data 的根级,直接用 $data.filter("#content") 就好。如果确定是子孙级,$data.find("#content") 就好。不确定的情况才需要上面那样。

撰写答案

推广链接