尝试从 get() 请求返回的 html 中选择“body”标签
Posted
技术标签:
【中文标题】尝试从 get() 请求返回的 html 中选择“body”标签【英文标题】:Trying to select a 'body' tag from html that is returned by get() request 【发布时间】:2011-12-11 23:57:22 【问题描述】:我正在制作一个ajax get call,它会返回 html 页面的内容。我正在尝试选择 body
标记的内容,但我的选择器返回一个空的 jquery 对象。
$.get(filename, function(data)
console.log($("body", data));
)
data
是 html 文件的内容。
【问题讨论】:
见***.com/questions/356340/… 使用正则表达式调用来获取body标签的内容。 【参考方案1】:jQuery 无法选择响应字符串的body
,因为使用$()
转换字符串时,<body>
标签会消失。
因此,您必须以另一种方式从data
字符串中选择正文,例如正则表达式。示例:
$.get(filename, function(data)
var body = data.replace(/^[\S\s]*<body[^>]*?>/i, "")
.replace(/<\/body[\S\s]*$/i, "");
//Optionally, convert the string to a jQuery object:
body = $(body);
console.log(body);
))
注意:我的正则表达式假定一个格式良好的 HTML 文档,其中 >
使用 HTML 实体正确显示。如果不是这种情况,则必须使用更高级的 RegExps,例如 this question 中显示的那些。
【讨论】:
想知道是否更容易将内容加载到 xml 文档中并使用选择器来获取 body 标签。 api.jquery.com/jQuery.parseXML @dev.e.loper 当然,当返回的 HTML 是一个格式良好的 HTML 文档。 让其他人知道,在我附加这个主体(使用 jQuery 附加)之后,我必须等待一点(通过 setTimeOut 函数)才能对刚刚附加的元素执行任何选择操作。 【参考方案2】:jQuery 使用文档对象模型,而不是构成该模型的“文本”。数据元素中只有一大段文本尚未添加到文档中。
$(body).html(data);
...假设数据包含有效的正文代码。它是一个完整的 HTML 页面,然后您需要将其解析为仅正文内容,例如使用 indexOf 或类似的东西。
【讨论】:
以上是关于尝试从 get() 请求返回的 html 中选择“body”标签的主要内容,如果未能解决你的问题,请参考以下文章
Axios.get 返回纯 html 而不是 JSON 返回数据
NSURLConnection GET 请求返回 -1005,“网络连接丢失”