【问题标题】:Strange behavior when loading page using XMLHttpRequest使用 XMLHttpRequest 加载页面时的奇怪行为
【发布时间】:2011-03-14 14:51:04
【问题描述】:

我有一个这样的脚本:

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,这是不正确的,因为文档的元素带有 idpage1
在 Google Chrome 的 Inspector 中查看,Doc 有一个子元素,其属性 id 设置为 page1
为什么它不起作用?

【问题讨论】:

    标签: javascript html xml ajax


    【解决方案1】:

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

    类似:

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

    查看here了解更多信息。

    【讨论】:

    • 添加了以下行: 和 dtd.dtd 文件: 它不起作用,在检查器资源中,甚至没有加载 dtd.dtd 文件。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-16
    • 1970-01-01
    • 1970-01-01
    • 2018-05-04
    • 1970-01-01
    相关资源
    最近更新 更多