尝试选择一个“身体”; get() 请求返回的 html 标签

发布于 2024-12-11 05:11:20 字数 298 浏览 0 评论 0原文

我正在做一个 ajax get 调用,它返回 html 页面的内容。我正在尝试选择 body 标记的内容,但我的选择器返回一个空的 jquery 对象。

$.get(filename, function(data) {
    console.log($("body", data));
})

其中 data 是 html 文件的内容。

I'm making an ajax get call that returns me contents of html page. I'm trying to select contents of the body tag but my selector returns an empty jquery object.

$.get(filename, function(data) {
    console.log($("body", data));
})

where data is contents of html file.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

青柠芒果 2024-12-18 05:11:20

jQuery 无法选择响应字符串的 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 实体正确显示。如果情况并非如此,则必须使用更高级的正则表达式,例如 这个问题

jQuery cannot select body of the response string, because the <body> tag disappears when the string is converted using $().

Hence, you have to select the body from the data string in another way, such as Regular expressions. Example:

$.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);
}))

Note: My Regular Expression assumed a wellformed HTML document, where > are correctly shown using HTML entities. If this is not the case, more advanced RegExps has to be used, such as the ones shown at this question.

殤城〤 2024-12-18 05:11:20

jQuery 使用文档对象模型,而不是构成该模型的“文本”。数据元素中只有一大段文本尚未添加到文档中。

$(body).html(data);

...假设数据包含有效的正文代码。如果它是一个完整的 HTML 页面,那么您需要仅解析它的正文内容,例如使用 indexOf 或类似的方法。

jQuery uses the document object model, not the "text" that makes up that model. You only have a big piece of text in the data element that hasn't been added to the document yet.

$(body).html(data);

... assuming the data contains valid body code. It it's an entire HTML page, then you'll need to parse it for just the body content, e.g. using indexOf or somesuch.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文