2013-12-14 81 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

相关问题