2013-07-18 155 views
0

很多節點我有一個RegistrationResponseMessages.xml:如何讀取XML文件使用javascript

<messages> 
    <error> 
    <code id="501">Couldn't retrieve the HTML document because of server-configuration problems.</code> 
    <code id="502">Server busy, site may have moved ,or you lost your dial-up Internet connection.</code> 
    </error> 
    <success></success> 
</messages> 

試圖讀取代碼編號501和502使用javascript的內容,但它不工作。

if (window.XMLHttpRequest) {// code for IE7+, Firefox, Chrome, Opera, Safari 
      xmlhttp = new XMLHttpRequest(); 
     } 
     else {// code for IE6, IE5 
      xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); 
     } 
     xmlhttp.open("GET", "RegistrationResponseMessages.xml", false); 
     xmlhttp.send(); 
     xmlDoc = xmlhttp.responseXML; 

     document.getElementById("errorCode403").innerHTML = getElementsByTagName(501)[0].childNodes[0].nodeValue); 

這裏顯示它:

<label id="errorCode403" style="font-weight: 600; color: red;">give some error</label> 

什麼是我的問題嗎?

+0

越來越有時錯誤:的getElementsByTagName沒有定義 –

回答

1

這是AJAX,你必須等待返回的數據,那麼你必須訪問它的正確方法:

var xmlhttp; 

if (window.XMLHttpRequest) { 
    xmlhttp = new XMLHttpRequest(); 
} else { 
    xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); 
} 

xmlhttp.onload = function() { 
    var xmlDoc = this.responseXML, 
     value = xmlDoc.getElementsByTagName('501')[0].childNodes[0].nodeValue; 
    document.getElementById("errorCode403").innerHTML = value; 
} 

xmlhttp.open("GET", "RegistrationResponseMessages.xml", false); 
xmlhttp.send(); 

不知道有關在XML遍歷,如501聽起來像一個奇怪的標籤名 ?

編輯:

得到的ID的列表,你這樣做onload處理內部:

xmlhttp.onload = function() { 
    var xmlDoc = this.responseXML, 

    var codes = xmlDoc.getElementsByTagName('code'); 
    var array = []; 

    for (var i=0; i<codes.length; i++) { 
     array.push(codes[i].id); 
    } 

    console.log(array); 
} 
+0

沒有你的代碼是AJAX?我可以使用它作爲JavaScript? –

+0

不,你的代碼是ajax,那是什麼XMLHttpRequest是,** A **同步** J ** avascript ** A ** nd ** X ** ML – adeneo

+0

我需要這個和平代碼別的東西導入爲AJAX在我的頁面上工作?我有一個簡單的html,裏面有javascript –