2013-07-18 35 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