2013-10-31 92 views
3

如何在ajax html响应中找到名为findThis的元素?我甚至无法找到的第一个孩子(的错误消息:对象不支持属性或方法“第一”)jquery ajax通过返回html解析

$.ajax({ 
      type: "GET", 
      url: www.someWebSite.com, 
      contentType: "application/x-www-form-urlencoded", 
      dataType: "text/html", 
      success: function (html) { 

      var topHtml= $(html).first(); 

      } 
     }); 

我使用jQuery 1.8.2

+0

'dataType:“html”'修复了吗? – Barmar

+0

也许试试'$(html)[0] .firstChild'直接访问DOM方法? –

+0

我试过了,没有工作:( – developer747

回答

0

这找到一个div从jQuery网站,

$.ajax({ 
      type: "GET", 
      url: 'http://jquery.com', 
      success: function (html) { 

      var aDiv= $(html).find('div').eq(0); 
console.log(aDiv.html()); 
      } 
     }); 
+0

这对我没有效果。你使用的是什么版本的jquery? – developer747

+0

@ developer747我试着从控制台访问jquery.com的代码,他们使用的版本是1.9.1,你可以看到如果你执行jQuery()。jquer当他们在他们的现场时在控制台。 – melc

6

今天陷入了完全相同的问题。经过一段令人沮丧的时光之后,我在各种场合发现了以下作品。经与部分HTML文件是这样的:

... 
<h4>headline</h4> 
<p id="id">Lorem ipsum dolor sit amet ...</p> 
... 

我只是想查找一个<p>的内容具有一定的ID和p的内容附加到元素的属性。

$.ajax({ 
    dataType: "html", 
    url : 'path/to/html.html', 
    success : function(html) { 
     var div = $('<div>'); 
     div.html(html); 
     var content = div.find('#id'); 
     $("#element").attr('attribute', content.html()); 
    } 
}); 

创建一个虚拟元件<div>,分配的HTML响应于div;从div中找到想要的内容,用html()解压。

jQuery似乎很难解析动态HTML。特别是如果标记混乱。我们必须通过一个虚拟元素并解析它的内容才能获得我们想要的内容。

我见过的所有其他解决方案都建议解析为HTML节点,只返回空元素或根本不返回任何内容。上述似乎是要走的路。