2010-06-24 140 views
5

我的ajax(jquery)响应(html)给了我一大堆html源代码,因为它提取了enrite页面。读取ajax html响应的一部分

的反应是有点像如下:

 

<html> 
<head> 
... 
... 
</head> 
<body> 
. 
..... 
. 

....... 

<div id="content"> 
    content i want to extract 
</div> 
............. 
.......... 
............. 

</body> 
</html> 

我需要用以下帮助:

1)是否有可能只阅读什么是<div id='content'></div>之间?如果是的话,怎么样? 2)如果#1不可能,我怎样才能从<div id='content'></div>中提取内容?

的代码我想:

 

    /*Ajax*/ 
    $jq(function(){ 
    alert ("Doc ready"); 
     $jq("#content a.next-page").bind("click", function(e){ 
      alert ("Hey!"); 
      /*Make the call*/ 
      $jq.ajax({ 
       url: "/page/2", 
       type: "get", 
       cache: false, 
       data: "", 
       error: function(){alert ("No data found for your search.");}, 
       success: function(results){ 
        //$searchPanel.find("tbody").empty().append(results); 
        //$searchPanelHolder.css({"display":"block"}); 
        alert (results.find("div[id='content']").html()); 
        e.preventDefault(); 
       } 
      }); 
      e.preventDefault(); 
     }); 
    }); 

任何帮助是非常赞赏

非常感谢, Racky

+1

胡斯塔一般评论;既然你直接抓取一个html页面而不通过后端“桥”,我认为这个页面是在你自己的域中,这个脚本来自同一个域。在这种情况下,您应该花时间开发一个PHP(或其他任何)脚本,直接触发数据库,​​并以JSON或XML格式返回您感兴趣的数据。这样,即使您更改该页面的标记,您的JS代码段也可以工作。 – 2010-06-24 13:30:45

+0

你应该检查某人的答案是否正确。 – Mark 2010-06-25 23:23:54

回答

0

是的,这是可能的,但你需要先制作一个jQuery对象。

改变这一行:

alert (results.find("div[id='content']").html()); 

这样:

alert ($(results).find("div[id='content']").html()); 

,或者更好的,这样的:

alert ($(results).find("#content").html()); 

编辑:

看起来,如果你想要的元素是body直接孩子,你需要使用.filter(),而不是因为body似乎是从jQuery对象中排除。看起来只是其内容被包括在内。

alert ($(results).filter("#content").html()); 
+0

谢谢一吨:)这也工作! – racky 2010-06-24 13:38:31

+0

@racky - 不客气。 :o)FYI使用'.find()'比* $(“#content”,results)快* * * *,因为jQuery只是将它转换成'.find()'。不过,这不会有明显的不同。 – user113716 2010-06-24 13:39:05

+0

嘿再次感谢,另一个小问题,现在我得到所需的数据与您的善意帮助。我现在正在做的是清空div中的旧内容[$(“#content”))。空()]并附加新检索的数据[.append(newdata)]。但是这个奇怪地将页面重新加载到空白页面!有关于此的任何想法? – racky 2010-06-24 13:54:28

1

这是怎么回事?

$("#content", results).html() 
+0

谢谢一吨:)这工作! – racky 2010-06-24 13:37:11