2013-07-18 34 views
0

我剛開始使用AJAX。我有一個查詢有關錯誤檢查解析Java腳本中的XML數據。其實我使用C代碼動態創建XML文件。有一段時間,我在下面一行發現「無法讀取子節點」的錯誤。 xmlDoc.getElementsByTagName( 「發送」)[0] .childNodes [0] .nodeValue。所以在使用這條線之前,有什麼方法可以檢查我的XML數據是否包含我正在尋找的所有標籤。所以我可以檢查並採取適當的行動。AJAX錯誤檢測

我知道,我應該提供適當的標籤,同時創建XML文件。但是,如果我錯過了一些時間,那麼我想我的Java腳本應該檢查。代碼

部分我使用讀取XML。

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","note.xml?"+ Math.random(),false); 
xmlhttp.send(); 

xmlDoc=xmlhttp.responseXML; 

document.getElementById("to").innerHTML= 
xmlDoc.getElementsByTagName("to")[0].childNodes[0].nodeValue; 

在此先感謝...

+2

請考慮採取格式化你的代碼的時間。這並不難,它確實幫助我們輕鬆地理解它。這次我爲你做了這個,但是爲將來的問題養成習慣會非常有幫助。 – tjameson

+0

對不起......下次我會小心的 –

回答

2

我想一個辦法就是

var to = xmlDoc.getElementsByTagName("to")[0] 
document.getElementById("to").innerHTML = to && to.childNodes.length ? to.childNodes[0].nodeValue : ''; 
+0

感謝阿倫......它爲我工作......這就是我想要的行爲..謝謝..再次感謝 –

2

你缺少onreadystatechange功能。

var xmlhttp = window.XMLHttpRequest ? new XMLHttpRequest() : new ActiveXObject("Microsoft.XMLHTTP"); 
xmlhttp.open("GET","note.xml?"+ Math.random(),false); 

xmlhttp.onreadystatechange = function() { 
    if (xmlhttp.readyState == 4 && xmlhttp.status == 200) { 
      var xmlDoc = xmlhttp.responseXML; 
      document.getElementById("to").innerHTML = xmlDoc.getElementsByTagName("to")[0].childNodes[0].nodeValue; 
    } 
} 
xmlhttp.send(); 

確保您沒有試圖從w3schools等來源學習AJAX。使用MDN爲learning AJAX或任何JavaScript。

+0

答覆....我會嘗試這個 –

+1

+ 1錯過了... –

+0

@VinayPatel我建議使用'.children',而不是'.childNodes'爲'.children'僅包含元素的節點和'.childNodes'包括文本和元素。 – Shawn31313