Javascript 使用XMLHttpRequest读取XML数据
我试图读取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 { //
<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文件并获取值。