客户端浏览器代码如下:
myXmlHttpRequest.onreadystatechange = function ()
{
if (myXmlHttpRequest.readyState == 4)
{if (myXmlHttpRequest.status == 200)
{
var cities = myXmlHttpRequest.responseXML.getElementsByTagName("city");
alert("你好");
}
}
}
服务器端代码如下:
echo "<province><city>西安市</city><city>渭南市</city></procince>";
问题排查:
1、看xmlHttpRequest引擎对象的responseXML属性中是否有内容,方法为:alert(myXmlHttpRequest.responseXML);结果返回为null。说明此属性中没有接收到服务器返回的数据信息。但是换成alert(myXmlHttpRequest.responseText);时,却返回“<province><city>西安市</city><city>渭南市</city></procince>”这一字符串。
至此,解决方案已经出来了,因为responseText属性中有内容,但是responseXML属性中没有内容,说明头信息的说明中出现问题了。
原来写成了header("content-type:text/text;charset=utf-8");,这样数据必然以文本形式返回至responseText属性中了。
应该写成header("content-type:text/xml;charset=utf-8");,这样的话,数据才能以XML的形式返回到responseXML属性中。
唉,粗心导致的问题啊!
今天的教训是:如果出现了问题,应该首先想到,在本程序中,与此问题有关的代码是否有问题。
2、还有一个注意的地方,应该是getElementsByTagName(),一定不能忘记s。