ajax怎么停止请求

rgone 发布于 2013/08/13 15:50
阅读 1K+
收藏 0

javascript怎么停止请求呢?

通过setTimeout("findreporter()",2000);的确可以实时输出服务器端的结果,但请问当服务器返回"done"字符串后怎么来停止这个循环请求呢。

<script type="text/javascript"> 

    function findreporter(){ 
       // alert("确定要在以上服务器上创建站点吗?"); 
       // document.getElementById("updateButton").disabled = "disabled";
        var url = "/CreateIISSites.htm"; 
        if (window.XMLHttpRequest) { 
          req = new XMLHttpRequest(); 
        }else if (window.ActiveXObject) { 
          req = new ActiveXObject("Microsoft.XMLHTTP"); 
        } 
        if(req){ 
          req.open("GET",url, true); 
          req.onreadystatechange = checkcontent; 
          req.send(null); 
        } 
        setTimeout("findreporter()",2000);
        
   		}

    function checkcontent(){ 
    if (req.readyState == 4) { // 判断对象状态 
     if (req.status == 200) { // 信息已经成功返回,开始处理信息 
          if(req.responseText != ""){ 
            if(req.responseText!=""){ 
              var returnValue=req.responseText.split(":"); 
              
              document.getElementById("createsitesprocess").innerHTML=req.responseText;
              document.getElementById('reporterUserName').value="username"; 
              document.getElementById('reporterUserTel').value=""; 
              if(returnValue[0] && returnValue[0]!="_") 
                document.getElementById('reporterUserName').value=returnValue[0]; 
              if(returnValue[1] && returnValue[1] != "null" ){ 

                document.getElementById('reporterUserTel').value=returnValue[1]; 
              } 

            } 
          }else{ 
            document.getElementById('reporterUserName').value=""; 
            document.getElementById('reporterUserTel').value=""; 
          } 
     } else { 
         alert("您所请求的页面有异常。"); 
     } 
    } 
    } 
</script> 
<div id="createsitesprocess"></div>  
<button value="点击" id="updateButton" onclick="findreporter();">点击</button>

加载中
0
xue777hua
xue777hua

用setInteval(function), 把这个函数返回的ID用一个变量接住,然后返回"DONE"了,用clearInteval(ID) 清除即可。

rgone
rgone
谢谢,您的方法很不错。
0
JonyZhang
JonyZhang
if ( xhr.readyState !== 4 ) {
    xhr.abort();
}
rgone
rgone
加在哪里呢。
0
JonyZhang
JonyZhang

我上面说的只是停止一个ajax请求。

你无非是想要轮询服务端的结果,但你的做法大大有误(不应该使用setTimeout,而是用轮询的方式)。应该是客户端发起一个请求(你可以把这个xhr缓存起来),在服务端有结果返回后,再看情况是否发起下一次请求,当你发现不需要再发起请求了,直接不发就ok了。不需要abort请求

返回顶部
顶部