Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/446.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 为什么可以';我不能在jQuery中解析Ajax html GET响应吗?_Javascript_Jquery_Html_Ajax - Fatal编程技术网

Javascript 为什么可以';我不能在jQuery中解析Ajax html GET响应吗?

Javascript 为什么可以';我不能在jQuery中解析Ajax html GET响应吗?,javascript,jquery,html,ajax,Javascript,Jquery,Html,Ajax,我正在使用一个Chrome扩展,其中我使用Ajax请求从请求的URL获取HTML。这是可行的,但我想得到一些特定元素的所有文本值。例如,所有带有类.heading bold script.js $.ajax({ url: "http://page.com/page.html", type: "GET", dataType: "html", success: function(data) { conso

我正在使用一个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

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head><title>Beerpong</title>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
    <meta http-equiv="Expires" content="0" />
    <meta http-equiv="Pragma" content="no-cache" />
    <meta http-equiv="Cache-Control" content="no-cache" />
    </head>
     <body>
        <div id="table-container">
            <table>
               <tbody>
                  <tr>
                   <td><div class="heading_bold">Beerpong</div></td>
                  </tr>
                </tbody>
            </table>
        </div>
     </body>
    </html>

贝尔邦
贝尔邦
将其记录到控制台就可以了。这是我的输出:

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

未捕获错误:语法错误,无法识别的表达式:如果您使用的是jquery 1.9,请执行以下操作:

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

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

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

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

希望这对您有所帮助。

不是语法错误的原因,但您的选择器必须是
”。heading_bold“
,而不是
”#heading_bold“
@nnnnnn拼写错误,已更改,但仍会向我抛出erorr:未捕获错误:语法错误,无法识别的表达式:尝试了您的代码段,现在我得到了一个空输出。我仔细检查了元素是否存在,语法是否正确。它应该是,但只是一个空输出。@Jack尝试使用.find()而不是.filter()。如果我想按类名对解析后的html进行计数,如
jQuery(html).find('.searchResultBox').length@PlanetHackers-yes,jQuery(html).find('.searchResultBox').length;将为您提供类名为“searchResultBox”的元素计数。@DemoUser我已尝试过此操作,但返回的结果为0。我通过使用
.filter(…).length解决了这个问题这是一个跨域请求,“加载”无法完成任务。$.ajax调用仍然存在跨域问题…对吗?只是好奇。。。您使用什么策略来克服跨域问题?CORS还是代理?我使用一个PHP代理,它通过隧道到达目标