尝试从 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 文档,其中 &gt; 使用 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”标签的主要内容,如果未能解决你的问题,请参考以下文章

使用烧瓶从选择标签中获取价值

如何从 PHP 发送 GET 请求?

Axios.get 返回纯 html 而不是 JSON 返回数据

NSURLConnection GET 请求返回 -1005,“网络连接丢失”

Redux和Axios在GET API请求上返回promise对象

WWW / UnityWebRequest POST / GET请求不会从server / url返回最新数据