一点开始按钮,过了会页面就死了,并且也也没有弹出对话框 “4”,以下是我的代码,麻烦高手给看看
JSP:
    
<script type="text/javascript">
   var XMLHttpReq; //创建XMLHttpRequest对象             function createXMLHttpRequest() {
               if (window.ActiveXObject) {
                XMLHttpReq = new ActiveXObject("Microsoft.XMLHTTP");
            } 
            else if (window.XMLHttpRequest) {
                XMLHttpReq = new XMLHttpRequest();                
            }
                }       //发送请求函数       function sendRequest() {
              createXMLHttpRequest();
              var url = "track.do?method=init";   
              XMLHttpReq.open("GET", url, true);
              XMLHttpReq.onreadystatechange = processResponse;//指定响应函数
              XMLHttpReq.send(null);  // 发送请求
            }       // 处理返回信息函数       function processResponse() {
            if (XMLHttpReq.readyState == 4) { // 判断对象状态
                 alert("4");
                 if (XMLHttpReq.status == 200) { // 信息已经成功返回,开始处理信息
                        alert("200");
                        showPage();
                        setTimeout("sendRequest()",4000);
                     }
                  }
          }
         function showPage(){
               var xmlDoc = XMLHttpReq.responseXML;
           var tracks = xmlDoc.getElementsByTagName("track");
           var result="<table border=1><tr><td>卡 号</td><td>天 线</td></tr>";
           for(var i=0;i<tracks.length;i++){
               result +="<tr>";
               var track=tracks[i];
               result  +="<td>"+track.getElementsByTagName("cardid")[0].firstChild.nodeValue+"</td>"
               result  +="<td>"+track.getElementsByTagName("antenna")[0].firstChild.nodeValue+"</td>"
               result +="</tr>";
           }
             result +="</table>";
             document.getElementById("data").innerHTML=result;
         }
    
                  
 </script>  </head>
  
  <body   bgColor="white" background="Image/right.gif">
        <input type="button" value="开始接收" onclick="sendRequest()"> 
       <div id="data"></div>
</body> 
=================================================================================
Action:
result_list.add(show); 
  
}      
} //  request.setAttribute("trackShow", result_list);
// return mapping.findForward("trackShow");   
}   

response.setContentType("text/xml");
PrintWriter out=response.getWriter();
out.println(parseToXML(result_list)); 
}catch(Exception e){
e.printStackTrace();
}
return null;
 } public String parseToXML(List list){
StringBuffer sb=new StringBuffer();
sb.append("<?xml version=\"1.0\" encoding=\"utf-8\"?>");
sb.append("<tracks>");
for(int i=0;i<list.size();i++){
TrackShow show=(TrackShow)list.get(i);
    sb.append("<track>");
    sb.append("<cardid>"+show.getCardid()+"</cardid>");
    sb.append("<antenna>"+show.getAntenna()+"</antenna>");
    sb.append("</track>");
}
sb.append("</tracks>");
return sb.toString();
}
}

解决方案 »

  1.   

    帮你顶
    settimeout()方法没使用错吧?
    function sendRequest() {
                  createXMLHttpRequest();
                  var url = "track.do?method=init";   
                  XMLHttpReq.open("GET", url, true);
                  XMLHttpReq.onreadystatechange = processResponse;//指定响应函数
                  XMLHttpReq.send(null);  // 发送请求
    setTimeOut("sendRequest()",4000);
                }
    function processResponse() {
                if (XMLHttpReq.readyState == 4) { // 判断对象状态
                     alert("4");
                     if (XMLHttpReq.status == 200) { // 信息已经成功返回,开始处理信息
                            alert("200");
                            showPage();
                            sendRequest();
                         }
                      }
              }
      

  2.   

    感觉你访问的url有点问题,换成var url = "<%=request.getContextPath()%>track.do?method=init";
    试试~
      

  3.   

    如果4没有打印应该是servlet没有执行,看看web.xml里面的培植是不是有问题
      

  4.   

    var url = "<%=request.getContextPath()%>/track.do?method=init";
    少了个/
      

  5.   

    忘了说一句,我在action 里面的parseToXML能输出
    show.getCardid(),有就是说action能执行
      

  6.   

    将你的程序中
    response.setContentType("text/xml");
    PrintWriter out=response.getWriter();
    out.println(parseToXML(result_list));
    换成
    response.setContentType("text/xml;charset=UTF-8");
    response.getWriter().write(parseToXML(result_list));
    response.getWriter().flush();
    response.getWriter().close();
    试试
      

  7.   

    setTimeout("sendRequest()",4000);这个方法好像有问题。设置的数值太大啦,页面就死啦。你看后台的进程,CPU的使用率肯定是100%。改成:setTimeout(sendRequest(),500);试试
      

  8.   

    按照楼上的方法我试了试,改成了setTimeout(sendRequest(),500);
    但是过了500毫秒,并没有到action里面执行
    这是什么原因?
      

  9.   

    你自己的做法setTimeout("sendRequest()",4000);是没有问题的
    你换我的方法试了吗