2012-11-19 86 views
4

我調用Ajax和我從responseText內容。獲取具體內容關閉的responseText

我通過使用alert確認在裏面,responseText包含整個頁面作爲string

這很好。現在我需要從字符串中提取具體內容,將其轉換爲DOM並使用getElementsByTagName,getElementsByName等...

我的問題是,這些似乎都沒有工作。

我讀過很多關於使用responseXML而不是responseText的參考資料,但是這讓我回到null

因此,通過堅持responseText,我怎樣才能得到我想要的特定元素?

舉例來說,如果我的回答包含以下內容:

<html> 
<head>....</head> 
<body>.... 
..... 
<table> 
<tr> 
<td>sometext</td> 
<td>someothertext</td> 
</tr> 
<tr> 
<td>sometext</td> 
<td>someothertext</td> 
</tr> 
<tr> 
<td>sometext</td> 
<td>someothertext</td> 
</tr>  
</table> 
<div> somediv </div> 
</body> 
</html>  

我怎麼能訪問該表和它的價值的第二行?或DIV等。 所以,現在在我的實際HTML,我也有東西像這樣

<html> 
<head>.....</head> 
<body> 
<table><tr><td id="test">Test</td></tr></table> 
</body> 
</html> 

我希望我的實際的HTML的表裏面要分析所提取的元素/值..

document.getElementById('test')。innerHTML = the_extracted_elements_from_responseText

回答

10

您需要在html上使用DOMParser,並在生成的文檔上使用DOM遍歷方法返回所需的節點。

var parser=new DOMParser(); 
    var xmlDoc=parser.parseFromString(responseText,"text/xml"); 
    var tds = xmlDoc.getElementsByTagName("td"); 

請注意,IE將需要new ActiveXObject("Microsoft.XMLDOM");來代替。

+0

大約需要注意的是IE瀏覽器將需要新的ActiveXObject( 「Microsoft.XMLDOM」);代替。這是在新的瀏覽器以及.. ??因爲我認爲這是隻在必要i.e7和更早.. – nikolas

+1

@nikolas我無法找到一個參考,但肯定了我的頭頂部IE8 +有'DOMParser' –

+0

我已經使用的document.getElementById(」測試')。innerHTML在我的代碼中,現在我得到[對象Nodelist]不應該只是將整個td解析到指定的區域? – nikolas