2014-12-05 19 views
0

我使用Ajax請求從我的網頁上獲取數據:如何讓html代碼包含隨機文本時使jQuery過濾器工作?

$.get("http://localhost/test.php", {id: myid}, 
    function(data) { 

     var $r = $(data); 
     alert($r.filter('.info').text()); 

    }); 

,一切工作正常時的test.php包含正確無誤線路是這樣的:

<span class="info">show me this info</span> 

但是當東西說明了沒有格式 - 例如錯誤或隨機文本在正確的HTML代碼前:

error text without formatting or random text 
<span class="info">show me this info</span> 

然後Ajax請求不再解析其它線路從.info得到的值。我得到空警報。這是爲什麼?而如何防止這種情況呢?

回答

1

只是包裝返回的HTML中的元素:

$.get("http://localhost/test.php", {id: myid}, 
function(data) { 

    var $r = $("<div>").html(data); 
    alert($r.filter('.info').text()); 

}); 

這將創建一個新的div元素,它的HTML設置爲您的HTML(無論它包含什麼)。

問題是你有頂級的元素,它不知道如何解析爲HTML。 jQuery的$(anystring)方法假定文本字符串是選擇器,,除非它以<元素開頭。如果它以<開頭,它將嘗試從中構建DOM元素。