日期:2014-05-16  浏览次数:20764 次

AJAX二级联动菜单关于status值为404的错误 - Web 开发 / Ajax
JScript code

function Change_Select(){//当第一个下拉框的选项发生改变时调用该函数
      var equipName = document.getElementById('equipName').value;
      var url = "SelectServlet?id="+ equipName;
      alert("url=" + url);
      if(window.XMLHttpRequest){
        req = new XMLHttpRequest();
      }else if(window.ActiveXObject){
        req = new ActiveXObject("Microsoft.XMLHTTP");
      }
      if(req){
        //通过GET方法向指定的URL建立服务器的调用
        req.open("GET",url,true);
         //指定回调函数为callback
        req.onreadystatechange = callback;
        req.send(null);
      }
    }
    function callback(){
      if(req.readyState ==4){
        [color=#FF0000]alert("req.status=" + req.status);[/color]        
        if(req.status ==200){    
          parseMessage();//解析XML文档
        }else{
          alert("不能得到描述信息:" + req.statusText);
        }
      }
    }
    //解析返回xml的方法
    function parseMessage(){
        ......
    }        
  </script>


var url = "SelectServlet?id="+ equipName; SelectServlet是xml中定义好的目录
XML code
  
<servlet-mapping>
    <servlet-name>SelectServlet</servlet-name>
    <url-pattern>/SelectServlet</url-pattern>
</servlet-mapping>


红色部分是我的测试语句,req.status值为404,not found。应该是url路径没找到,不知道为什么,请大家帮我找下吧,找了好长时间没找出问题。。。

------解决方案--------------------
你先看一看,你的服务启动时有没有错。如果没有错,那你单独把你的servlet测试一下,看行不行。
如果你单独测试没有问题,那你把req.open("GET",url,true);
//指定回调函数为callback
req.onreadystatechange = callback;
这个顺序调一下:
 //指定回调函数为callback
req.onreadystatechange = callback;

req.open("GET",url,true);