作为DOM对象的Ajax响应

问题描述:

有没有办法从典型的ajax函数获取响应,以便可以使用getElements来解析它?我试过query.responseText.getElementById,但它的效果和它看起来一样糟糕。不过,您应该能够通过查看该片段来了解我想要实现的目标。我只需要像使用普通的DOM对象一样从ajax响应中获取元素。作为DOM对象的Ajax响应

另外,请做不是建议使用jQuery。我使用它时,我有很多脚本,可以使用它的很多功能,但在这种情况下,我只有一个简短的脚本和一个70倍大小的库,看起来像是浪费。

参考这篇文章:Parsing XML response in Ajax

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

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

如果您的回复是TEXT,我已经看到了ppl使用... xhr.responseText.spit('html> ... body> ... div id =“yourTargetsParent”>')[1]。分裂( '/ DIV> .../BODY> .../HTML>')[0]; //只是将字符串分开!

另一种方法是使用iframe.contentWindow.document.body ...(或一些浏览器的contentDocument)...只是隐藏iframe你知道。很显然,如果你有完全改变目标的控制权(这篇文章可能不会在这里),但我也看到了一些有意义的解决方法,使用目标的主机dom localStorage脚本,分裂/连接,webSQLDatabases ...用于字符串操作。

老实说,我曾经使用隐藏的div(谢谢asleepysamurai!),但我想我碰到了更多的getElementById/jQuery.load类型的方式。 ..I'll后回来,如果我找到它...

Parsing an SVG or HTML document

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

DOC将是一个有效的HTML文档。