2010-07-12 25 views
1

时,我有一个这样的脚本:奇怪的行为加载页面使用XMLHttpRequest的

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相关。
在Chrome浏览器的检查器中,Doc有一个子女,其属性id设置为page1
为什么它不起作用?

回答

1

这是因为getElementById通常只适用于html/xhtml。您可以通过修改数据来避免这种情况,以便它以xhtml格式而不是普通XML格式,或者可以尝试向文件中添加一些XML DTD,以便getElementById 应该可以工作。

喜欢的东西:

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

检查here以获取更多信息。

+0

添加以下行: <!DOCTYPE页SYSTEM “dtd.dtd”> 而dtd.dtd文件:<!ELEMENT页(层)*> <!ELEMENT层(层|挂机)*> <!ELEMENT hook EMPTY> <!ATTLIST图层ID ID> <!ATTLIST页面ID ID> <!ATTLIST钩子ID ID> 它没有工作,并且在检查器资源中,dtd.dtd文件wasn' t甚至加载。 – Dani 2010-07-12 02:35:06