2013-12-14 83 views
1

早上好, 我通過AJAX歌廳另一個頁面的HTML:querySelectorAll()從另一個HTML頁面

var xml = new XMLHttpRequest() 
xml.onreadystatechange = function() { 
    if (xml.readyState == 4) { 
     // here I need to work with data 
     // xml.responseText 
    } 
} 
xml.open("GET", url, false); 
xml.send(null) 

如何申請querySelectorAll()的HTML另一頁的內容?

回答

8

您可以創建新的文件,並把responseText進去。然後你可以使用querySelectorAll()。這裏是你的onreadystatechange函數:

function() { 
    if (xml.readyState == 4) { 
     var container = document.implementation.createHTMLDocument().documentElement; 
     container.innerHTML = xml.responseText; 
     var nodeList = container.querySelectorAll('selector'); 
    } 
} 
2

如果你的回覆是有效的XML,你可以試試xml.responseXml

如果不是的話,你可以考慮使用一個DocumentFragment

var doc = document.createDocumentFragment(); 
var div = document.createElement("div"); 
div.innerHTML = xml.responseText; 
doc.appendChild(div); 

var nodes = doc.querySelectorAll("..."); 
+1

你能解釋'createDocumentFragment()'和'createHTMLDocument()'之間的實際區別嗎? – Pavlo

+1

@Pavlo好問題!根據[MDN的示例](https://developer.mozilla.org/en-US/docs/Web/API/DOMImplementation.createHTMLDocument#Example),您還必須將創建的文檔複製(「導入」)到當前網站的文件,如果你想最終顯示HTML。 – ComFreek

相關問題