2014-09-22 32 views
0

我在没有官方API的网站上执行XMLHttpRequest,并在xhr.responseText中收到HTML响应。但是,我不能通过xhr.responseText.getElementsByName("something")[0].value;来提取名为“something”的特定元素的值。在xhr.responseText中为纯文本使用getElementsByName

我可以打开一个新窗口并使用document.write在该窗口上编写xhr.responseText,然后使用window_name.getElementsByName("something")[0].value;但我不会那样。我的代码

有问题的一部分:

xhr.responseText.getElementsByName("something")[0].value; 
+0

所以你得到一个完整的HTML文件作为回应?或者只是一个片段? – MaxArt 2014-09-22 11:01:08

+0

responseText是一个字符串值。 – MarsOne 2014-09-22 11:01:51

+0

@MaxArt我正在获取整个HTML文档。 – Anonymous 2014-09-22 11:01:57

回答

1

您可以使用在那些支持它的浏览器DOMParser API

var parser = new DOMParser(); 

var doc = parser.parseFromString(xhr.responseText, "text/html"); 

现在docHTMLDocument对象,具有getElementsByName和所有。

可用于IE9 +和其他标准浏览器(HTML文档为IE10,Safari中不提供)。

替代

您可以create HTML documents,而不需要一个新的窗口/帧太:

doc = document.implementation.createHTMLDocument(""); 
doc.documentElement.innerHTML = xhr.responseText; 

这应该是IE9和Safari浏览器可用了。

+0

挨打!我正要提出这种方法! – 2014-09-22 11:08:36

+0

非常感谢,稍后再尝试,如果有效,请接受答案。 – Anonymous 2014-09-22 11:08:55

+0

根据您的需要,您也可以创建一个虚拟元素并使用您的Ajax responseText填充其innerHTML。然后你就可以访问它的DOM方法。完成后将其设置为空。 – 2014-09-22 11:14:42