Javascript 使用XMLHttpRequest加载页面时的奇怪行为
我有这样一个脚本:Javascript 使用XMLHttpRequest加载页面时的奇怪行为,javascript,html,xml,ajax,Javascript,Html,Xml,Ajax,我有这样一个脚本: var xml_http_request = new XMLHttpRequest(); xml_http_request.addEventListener('readystatechange', PageReady, false); xml_http_request.overrideMimeType("text/xml"); xml_http_request.open('GET', "index.xml", true); xml_http_request.send(null
var xml_http_request = new XMLHttpRequest();
xml_http_request.addEventListener('readystatechange', PageReady, false);
xml_http_request.overrideMimeType("text/xml");
xml_http_request.open('GET', "index.xml", true);
xml_http_request.send(null);
function PageReady()
{
if(this.readyState != 4)
return;
var Doc = this.responseXML;
alert(Doc.getElementById("page1"));
}
和index.xml文件:
<?xml version="1.0" encoding="UTF-8"?>
<page id="page1">
<layer id="layer1">
<hook to="page1" edge="top" distance="10px" />
<hook to="page1" edge="left" distance="10px" />
<hook to="page1" edge="right" distance="10px" />
<hook to="page1" edge="bottom" distance="10px" />
</layer>
</page>
我看到的警报包含消息:null
,这是不正确的,因为文档获取的元素具有id
page1
在Google Chrome的Inspector中查看,
Doc
有一个子元素,其属性id
设置为page1
为什么不工作?这是因为getElementById通常只在html/xhtml上工作。您可以通过修改数据以使其采用xhtml格式而不是纯XML来解决这个问题,或者可以尝试向文件中添加一些XML DTD,以便getElementById能够工作 比如:
<!ELEMENT page>
<!ATTLIST page id ID>
查看更多信息。这是因为getElementById通常只适用于html/xhtml。您可以通过修改数据以使其采用xhtml格式而不是纯XML来解决这个问题,或者可以尝试向文件中添加一些XML DTD,以便getElementById能够工作 比如:
<!ELEMENT page>
<!ATTLIST page id ID>
查看更多信息。添加了以下行:和dtd.dtd文件:它不工作,在inspector资源中,dtd.dtd文件甚至没有加载。添加了以下行:和dtd.dtd文件:它不工作,在inspector资源中,dtd.dtd文件甚至没有加载。