AJAX 中getElementsByTagName("ans")的结果长度总是为0的原因

    一个很简单的ajax应用,就是我单击一个按钮时,转到另一个页面去处理一些业务逻辑(不想用直接的页面跳转,用ajax异步处理更好),然后返回一个处理结果
然后就出现了下面问题:
function callback()
{
if(req.readyState == 4)
{
if(req.status == 200)
{
var msg = req.responseText;
alert(msg);

if(msg != "")
{

//得到一个responseXML
//请注意这里不是req.responseXML.documentElement!!!!!!!!
var xmlDoc = req.responseXML;
alert(xmlDoc);
var ansTag = xmlDoc.getElementsByTagName("ans");
alert(ansTag.length);
  
alert(ansTag[0].childNodes[0].nodeValue);
}
}
}
}
我通过alert(msg)红色部分查看到了一个完整的xml文件,里面确实有名为ans的结点
但是我alert(ansTag.length);蓝色部分时,长度老是为0
我同时alert(xmlDoc)粉色部分,不为null 确实是一个object
我就想不明白这是为什么那个长度老是为0。请问谁帮我解决这个问题吗?

一并附上我那个处理业务逻辑的页面(即提供返回值的那个页面(已经将业务逻辑部分省略,简单提供返回值))
<!-- 必须加上xml的头,因为我们等下要利用处理xml文件的api来读取xml文件,因而要声明为xml文件 --&gt
<?xml version="1.0" encoding="utf-8"?>

response.setContentType("text/xml");
response.setHeader("Cache-Control","no-store");
response.setHeader("Pragma","no-cache");
response.setDateHeader("Expires", 0);
int ans = 12;
String msg = ""+ans+"";
out.print(msg);
%>

我alert responseText时的结果也附上:
<!-- 必须加上xml的头,因为我们等下要利用处理xml文件的api来读取xml文件,因而要声明为xml文件 --&gt
<?xml version="1.0" encoding="utf-8"?>
12

---------上面是我遇到问题的描写(在csdn上发过帖子求助)-------
 
后来一个朋友利用firebug(第一次听过这个调试工具,听说调试js蛮不错的)。调试出来了,在一个xml文件中,第一行必须是xml的头,也就是必须是<?xml version="1.0" encoding="utf-8"?> 。我当初也是好意,在第一行写个注释,结果花费了我几个小时的时间。 这只是一个很小的错误而已,但同时也很难调试出来,供大家参考!
    最后我们应该认识到以后遇到这个问题时,基本上都会是xml文件出问题了(在我这个案例是xml文件头得位置不对),以后可能就是其他的原因,反正对根结底,遇到这种情况时,先仔细检查自己生成的xml文件是否绝对的正确!要知道js的调试很困难,一定要仔细!

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/25701553/viewspace-697692/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/25701553/viewspace-697692/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值