为什么我不能在jQuery中解析Ajax html GET响应?

我正在使用Chrome扩展程序,我使用Ajax请求从请求的URL获取HTML。 这有效,但我希望得到一些特定元素的所有文本值。 例如,所有类都带有.heading-bold

的script.js

 $.ajax({ url: "http://page.com/page.html", type: "GET", dataType: "html", success: function(data) { console.log($(data).filter( '.heading_bold' ).text()); } }); 

响应HTML

   Beerpong       
Beerpong

将其记录到控制台工作正常。 这是我的输出:

 Uncaught Error: Syntax error, unrecognized expression: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0.... 

为什么? 为什么不只是console.log我想要的值?

如果您使用的是jquery 1.9,请执行以下操作:

 ... success: function(data) { var html = $.parseHTML(data); console.log($(html).find( '.heading_bold' ).text()); } .. 

因为根据jQuery 1.9 ::传递给jQuery()的HTML字符串以不同于小于字符的东西开头将被解释为选择器。 由于字符串通常不能被解释为选择器,因此最可能的结果是Sizzle选择器引擎抛出的“无效的选择器语法”错误。 使用jQuery.parseHTML()来解析任意HTML。

如果要将远程文档的一部分插入DOM,也许可以尝试使用“load”而不是“$ .get()”。

 $("#result").load("page.html .heading_bold",function(response){ console.log($(this).find(".heading_bold").val()); }); 

希望这对你有所帮助。