function callback(){
   if (req.readyState == 4){
    if(req.status == 200){
     var msg = req.responseXML.getElementsByTagName("msg")[0];
     // alert(msg.childNodes[0].nodeValue);
    setMsg(msg.childNodes[0].nodeValue);
    }
   }
}
这是回调函数,就是  var msg = req.responseXML.getElementsByTagName("msg")[0];
这行什么结果也没有,然后我把[0]去掉,才可以。
alert(msg.childNodes[0].nodeValue);没有弹出。我不知道这两个地方是怎样的问题导致的,望大家指点一二!thanks !

解决方案 »

  1.   

    调试下吧,或者用ff的js调试
    或者在可能出错的地方alert一下
      

  2.   

    现在就是var msg = req.responseXML.getElementsByTagName("msg")
    alert(msg)是个Object
    可alert(msg.childNodes[0].nodeValue);没有任何结果啊!是写错了 吗?就是这行出错的,
    之前的语句我都alert了。
      

  3.   

    getElementsByTagName("msg")返回的是个数组。
    但是如果没有取到msg节点的话就返回的空而不是一个数组了。所以用[0]下标会出错。
      

  4.   

     function  handleResponse(){       
            if(xmlHttpReq.readyState==4&&xmlHttpReq.status==200){
                 
                   var text=xmlHttpReq.responseXML;
                   var citys = text.getElementsByTagName("city"); 
                   alert(citys);
                   var citySelect = document.myform.city;
                   citySelect.length=citys.length;
       for(i=0;i<citys.length;i++){
            citySelect.options[i].text=citys[i].childNodes[1].firstChild.nodeValue;
       citySelect.options[i].value=citys[i].childNodes[0].firstChild.nodeValue;
       }
       }
            }
      

  5.   

    有可能req.responseXML.getElementsByTagName("msg")[0],这里getElementsByTagName得到的数组可能为空,或者你返回的XML的标签有没有问题,可以用alert(req.responseText),看返回的数据是不是你想象的那样;
      

  6.   

    楼主的问题在于req.responseXML.getElementsByTagName("msg")[0],这句报错后你把[0]去掉。那么这个时候可能,也许。var msg的值不知道是什么。
    那么你再来 msg.childNodes[0].nodeValue报错是正常的。因为还不确认msg是什么
    也可能是msg[0].childNodes[0].nodeValue也不一定