将Ajax响应作为DOM对象返回

4
有没有一种方法可以从典型的ajax函数中获取响应,以便可以使用getElements进行解析?我尝试过query.responseText.getElementById,但它的效果和看起来一样糟糕。通过查看代码片段,您应该能够知道我想要实现什么。我只需要像处理普通DOM对象一样从ajax响应中获取元素。
此外,请不要建议使用jQuery。当我有很多脚本并且可以使用很多其功能时,我会使用它,但在这种情况下,我只有一个简短的脚本和一个比它大70倍的库似乎是浪费。
4个回答

5

解析SVG或HTML文档

parser = new DOMParser();
doc = parser.parseFromString(stringContainingHTMLSource, "text/html");

doc将成为一个有效的html文档。


3
您可以在页面上设置一个隐藏的
,将其innerHTML设置为您接收到的Ajax响应。然后,您可以调用div.getElementById(),因为它只是另一个DOM对象。

2

请参考这篇文章:Ajax中解析XML响应

在这种情况下,我使用responseXML。您可以使用getElementsByTagName和其他getElement*()方法来获取数据。


1
如果你的回应是TEXT,我看到人们使用... xhr.responseText.spit('html>...body>...div id="yourTargetsParent">')[1].split('/div>.../body>.../html>')[0]; //只需分割字符串即可!
另一种方法是使用iframe.contentWindow.document.body...(或者对于某些浏览器,使用contentDocument)...只需隐藏iframe就可以了。
显然,如果你控制目标,那么情况完全不同(这篇文章可能就不会出现),但我也看到过一些针对目标使用脚本主机dom、localStorage、拆分/连接、webSQLDatabases等进行字符串操作的方法。
老实说,我曾经使用一个隐藏的div(谢谢asleepysamurai!),但我认为我找到了一种更getElementById/jQuery.load类型的方法。如果我找到了,我会回复的...

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接