[英]GET from JavaScript, problems parsing XML? Or Maps API errors?
[英]Problems parsing XML in Javascript
我有一个javascript函数,可对服务器上的php文件进行http_request生成XML文件(请参见下面的输出)。 当返回XML文件时,相同的javascript函数将解析XML(这是我的问题所在) ,并将其传递给其他函数。 负责大部分的处理。
到目前为止,我一直无法解析我的XML文档,我还不太清楚为什么。
XML格式
<Results><!--Root-->
<Result_Set>
<State>State</State>
<Cities>
<City>City 1</City>
<City selected="true">City 2</City>
...ETC...
</Cities>
<Zipcodes>
<Zipcode selected="true">Zipcode 1</Zipcode
<Zipcode>Zipcode 2</Zipcode>
...ETC...
</Zipcodes>
</Result_Set>
</Results>
Java脚本
function GetZipInfo(zipcode){
var xmlhttp;
var x,resultSet,state,cities,zipcodes
if (window.XMLHttpRequest){// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
}
else{// code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function(){
if (xmlhttp.readyState==4 && xmlhttp.status==200){
resultSet=xmlhttp.responseXML.documentElement.getElementsByTagName("Result_Set") //Function Crashes Here
for(x=0;x<resultSet.length;x++){
state=resultSet[x].getElementsByTagName("State")[0].nodeValue;
cities=resultSet[x].getElementsByTagName("Cities");
zipcodes=resultSet[x].getElementsByTagName("Zipcodes");
selectState(state)
xmlDropdown(cities, "City", "Cities")
xmlDropdown(zipcodes, "Zipcode", "Zipcodes")
}
}
}
xmlhttp.open("GET","GetZipInfo.php?Zipcode="+zipcode,true);
xmlhttp.send();
}
我以前从未解析过任何语言的XML文档,因此我可以肯定地说我完全错了。
先感谢您!
编辑:原来,我的响应作为responseText而不是responseXML回来
responseText
我正在使用php创建XML页面:
header("Content-Type: text/plain");
//Create the DOM
echo $xmlDoc->saveXML()
仍然不确定为什么它不以XML返回。 可能与echo $ xmlDoc-> saveXML()有关吗?
编辑 :我同意一些评论,我的问题是与我的XML文件中的标头。 我在代码中添加了“ alert(xmlhttp.responseText)”行。 显示:
<?xml version="1.0"?>
<!--The Contents of my XML file-->
是否需要设置编码类型才能使其正常工作。 如果是这样,如何修改我的PHP代码(请参见上文)以插入该编码?
您的响应的MIME类型应为text/xml
或以+xml
结尾的内容( RFC 3023 )。
另外,您应该在第一行之前添加XML声明 。
而在去年,但并非最不重要的,虽然getElementsByTagName
可以用HTML文档中的所有元素,你应该使用document.getElementsByTagName
在XML文档:
var resultSet = xmlhttp.responseXML.getElementsByTagName("Result_Set");
在代码的顶部,您缺少的内容:
<?xml version="1.0" encoding="UTF-8" ?>
还缺少“;” 在这些行之后:
selectState(state)
xmlDropdown(cities, "City", "Cities")
xmlDropdown(zipcodes, "Zipcode", "Zipcodes")
在XML中,之后也缺少“>”:
</Zipcode
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.