`
tphaofang
  • 浏览: 18406 次
  • 性别: Icon_minigender_1
  • 来自: 湖南
社区版块
存档分类
最新评论

用ajax实现一个请求超时中断请求的功能,并实现倒计时

阅读更多
主要的js代码如下:

// 倒计时
var beginTime="30";
function DoConverseCallTimer(){
   beginTime=parseInt(beginTime,10)-1;
   if(beginTime<0){
       window.clearTimeout(timer);
   }else{
   $('displayTime').innerText=beginTime;
  
   timer1= window.setTimeout("DoConverseCallTimer()",1000);
   }
}
}
// 取消请求状态
function callInProgress (xmlhttp) {
    switch (xmlhttp.readyState) {
    case 1: case 2: case 3:
    return true;
    break;
   
    default:
    return false;
    break;
    }
}   
// 显示超时错误信息
function showFailureMessage(){
   
    alert('系统繁忙,请稍候再试!');
}

var handle={
onCreate: function(request) {
            // 当创建Ajax请求时,显示loading
          Element.show('loading');
          // 启动倒计时
          DoConverseCallTimer();
          request['timeoutId'] = window.setTimeout(
            function() {
            if (callInProgress(request.transport)) {
                request.transport.abort();
                showFailureMessage();
               
            }
        },
        30000 // thirty seconds
        );
    },
    onComplete: function(request) {
   
        if(Ajax.activeRequestCount==0){
              Element.hide('loading');
              }
       window.clearTimeout(request['timeoutId']);
       window.clearTimeout(timer);
     
    }
    onException: function(request){
      if(Ajax.activeRequestCount==0){
              Element.hide('loading');
      }
       window.clearTimeout(request['timeoutId']);
       window.clearTimeout(timer);
}
 }
// 将handle注册到合局Ajzx.Responders对象,使其生效
  Ajax.Responders.register(handle);
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics