使用XMLHttpRequest加载页面时出现奇怪的行为

时间:2010-07-12 02:06:33

标签: 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);

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的检查器,Doc只有一个属性id设置为page1的子项。 为什么它不起作用?

1 个答案:

答案 0 :(得分:1)

这是因为getElementById通常只适用于html / xhtml。您可以通过修改数据以使其为xhtml格式而不是纯XML来解决此问题,或者可以尝试将一些XML DTD添加到您的文件中,以便getElementById 应该工作。

类似的东西:

<!ELEMENT page>
<!ATTLIST page id ID>

查看here了解详情。