通过 ajax 请求页面,但知道哪个类有正文

Posted

技术标签:

【中文标题】通过 ajax 请求页面,但知道哪个类有正文【英文标题】:Request a page vía ajax but know what class had the body 【发布时间】:2014-09-29 12:57:28 【问题描述】:

我想在通过 ajax 获取页面时获取 body 类,如下所示:

$.get(url, function (data) 
    console.log(data);
    console.log( $(data).find('body').length, $(data).filter('body').length );
);

当数据记录完整的 html 代码时(带有 doctype、head、body、..)

两个日志都会返回0

知道我错过了什么吗?

【问题讨论】:

尝试console.log( $(data) );,您可以看到数据从html中生成的实际jQuery对象。 问题是身体不在那里......我一定是错过了什么...... 【参考方案1】:

jQuery 似乎不喜欢带有 doctype 或 $("<html><body>") 之类的东西。不知道为什么或者这是否是一个错误,但您可以创建自己的文档并从中创建一个 jQuery 集合。

var doc = document.implementation.createHTMLDocument();
doc.innerHTML = data;
var $doc = $(doc);
console.log($doc.find("body").length);

【讨论】:

不错!这行得通!知道为什么console.log($doc.find("body").className); 返回一个空字符串吗? (body 有几个类) @ToniMichelCaubet .find 也返回一个 jQuery 集合,而 .className 不是一个 jQuery 属性。您可以使用 .attr("class") 或不使用 jQuery 并使用 doc.querySelector("body").classList(或 className

以上是关于通过 ajax 请求页面,但知道哪个类有正文的主要内容,如果未能解决你的问题,请参考以下文章

js页面用定时任务通过AJAX获取后台数据,但是从这个页面跳转到其他页面后,定时任务仍然在定时请求后台

如何利用jquery ajax实现循环的ajax请求

AJAX请求页面未重新渲染后

无需重新加载页面即可删除 SQL 值(AJAX、PHP)

jQuery Mobile 如何通过ajax方式动态加载页面?

为页面上的所有 AJAX 请求添加“钩子”