2010-07-12 45 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