Javascript 使用XMLHttpRequest读取XML数据

Javascript 使用XMLHttpRequest读取XML数据,javascript,xml,xmlhttprequest,Javascript,Xml,Xmlhttprequest,我试图读取xml文件,但不知何故我得到了这个错误:参数的数量无效 <script type="text/javascript"> //<![CDATA[ if (window.XMLHttpRequest) { // code for IE7+, Firefox, Chrome, Opera, Safari xmlhttp = new XMLHttpRequest(); } else { //

我试图读取xml文件,但不知何故我得到了这个错误:参数的数量无效

<script type="text/javascript"> 
//<![CDATA[ 
    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", "employee.XML", false); 
    xmlhttp.send(); 
    xmlDoc = xmlhttp.responseXML; 

    var empid= xmlDoc.getElementsByTagName("empid"); 
    var total = placeMarks.length; 
    var names = xmlDoc.getElementsByTagName("Name"); 
    var designation= xmlDoc.getElementsByTagName("designation"); 
    var phone= xmlDoc.getElementsByTagName("phone"); 
    ..... 
</script> 

// 
XML数据:

<employee>
<emp id="1007">
<name>John Chamber</name>
<designation>Web Expert1</designation>
<phone>555-55-555</phone>
<name>John D</name>
<designation>Web123123</designation>
<phone>555-55-555</phone>
<name>Chamber</name>
<designation>Web Expert</designation>
<phone>555-55-555</phone>
<name>Thomas</name>
<designation>TESTTEST</designation>
<phone>555-55-555</phone>

</emp>
</employee>

约翰·钱伯斯
网络专家1
555-55-555
约翰·D
网络123123
555-55-555
室
网络专家
555-55-555
托马斯
测试
555-55-555

首先如下图所示分支出您的代码,查看服务器是否以正确的
200
响应进行响应

            xmlhttp.open("GET", "employee.XML", false); 
            xmlhttp.send(null);
         if (xmlhttp.status==200) {

                      xmlDoc = xmlhttp.responseXML; 
                     var empid= xmlDoc.getElementsByTagName("emp"); 
                     var total = placeMarks.length; 
                     var names = xmlDoc.getElementsByTagName("Name"); 
                     var designation= xmlDoc.getElementsByTagName("designation"); 
                     var phone= xmlDoc.getElementsByTagName("phone"); 
                     ..... ;
          }

                else if (xmlhttp.status==404) {
          alert("XML could not be found");
         }
另外,我的建议是使用像jQuery这样的javascript库,它为您的应用程序完成了大量繁重的工作。创建XHR对象的整个代码只需一行

$.get(url,function(data){
                     xmlDoc = data; 
                     var empid= xmlDoc.getElementsByTagName("emp"); 
                     var total = placeMarks.length; 
                     var names = xmlDoc.getElementsByTagName("Name"); 
                     var designation= xmlDoc.getElementsByTagName("designation"); 
                     var phone= xmlDoc.getElementsByTagName("phone");
});
最后,无论您使用哪种现代浏览器,都应该能够轻松指出脚本中哪一行抛出了错误。如果您仍然面临问题,请确认哪一行抛出了错误

编辑 问题的范围已经改变。OP现在希望遍历xml。 首先,xml的设计需要牢记需求。所以应该是这样的

<employees>
 <emp id="006">
   <name>John Chamber</name>
   <designation>Web Expert1</designation>
   <phone>555-55-555</phone>
 </emp>
 <emp id="007"> 
  <name>John D</name>
  <designation>Web123123</designation>
  <phone>555-55-555</phone>
 </emp>
 <emp id="008"> 
  <name>Chamber</name>
  <designation>Web Expert</designation>
  <phone>555-55-555</phone>
 </emp>
 <emp id="009">
   <name>Thomas</name>
   <designation>TESTTEST</designation>
   <phone>555-55-555</phone>
 </emp>
</employees>

约翰·钱伯斯
网络专家1
555-55-555
约翰·D
网络123123
555-55-555
室
网络专家
555-55-555
托马斯
测试
555-55-555
现在是解析xml的javascript

var emp=xmlDoc.getElementsByTagName("emp");
for (i=0;i<emp.length;i++) {
   var names=emp[i].childNodes[0].text;
   var designation= emp[i].childNodes[1].text;
   ......
}
var emp=xmlDoc.getElementsByTagName(“emp”);

对于(i=0;i使用
xmlhttp.send(null);

哪个浏览器你知道错误在哪里吗?哪里定义了
placeMarks
?哇,这和删除评论没什么两样。特别是我的评论要求更多细节。我喜欢人们编辑,不在意。让我们再来一次。什么浏览器?完整的错误信息是什么?行号是什么?你没有收到错误,你怎么能说
我在做ng此错误:参数数无效。
听起来好像有错误。:)嗨…有人能告诉我如何读取服务器上的“employee.XML”吗..Philar:您如何循环
xmlhttp.open(“GET”)
Chicagoland,我认为您犯的错误是xml标记应该是
而不是
。因此,在解析时,在进行此更改后,如果需要属性
id
的值,您应该使用
xmlDoc.getElementsByTagName(“emp”)
.attributes.getNamedItem(“id”).nodeValue谢谢Philar:但是我如何循环遍历xml文件;我将更新xml文件以让您了解我在说什么。我刚刚更新了
xml
文件。我要做的是循环遍历xml文件并获取值。