[原创]一个低级错误导致的AJAX无法解析返回的XML

[原创]一个低级错误导致的AJAX无法解析返回的XML
在用AJAX(结合Struts)做一个联动下拉框的过程中,后台action中返回的XML用如下javascript代码解析

function  parseMessage()  {
    
var xmlDoc=req.responseXML.documentElement;
    
var xSel=xmlDoc.getElementsByTagName("addr4");
}

奇怪的是 var xSel = xmlDoc.getElementsByTagName("addr4") 始终无法取得若干个 <addr4>XXX</addr4> 内容, 在网上查也都是这种写法,搞了一个下午弄的我头晕脑胀。最后同事一语提醒了我,在action中加入以下代码,问题解决:

response.setContentType( " text/xml;charset=UTF-8 " );
response.setHeader(
" Cache-control " , " no-cache " );

结论:如果没有这两句,返回值不会被当做XML处理,当然就取不到 addr4 节点


2008.10.22 补充:有的人写将上面的第一句简化成:

response.setContentType( " text/xml " );

这样做如果返回的XML中没有中文时没问题,但是如果返回的XML中存在中文的话,也会无法取得返回的XML

你可能感兴趣的:([原创]一个低级错误导致的AJAX无法解析返回的XML)