加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

http ERR_EMPTY_RESPONSE 错误记录13之error回调来解决

(2018-03-04 17:35:14)
标签:

err_empty_response

http

xmlhttprequest

分类: http相关

错误源头一直找不到,如果是执行$.ajax发生的,你可以试试重新访问,它会走error方法;并在xhr.Status返回undefined。

xhr.status 一般返回100 - 600状态码,真心搞不懂为什么返回undefined,要不就是XHR建立时候出错,其实xhr.status应该返回0;才知道它个是未知错误,要不就是未知错误导致它返回undefined。但是当使用XMLHttpRequest2对象的时候,它却返回0。

以下方法是发生ERR_EMPTY_RESPONSE错误后重复调用$.AJAX。

$.ajax({ tryCount: 0, retryLimit: 5,
        error: function (xhr, textStatus, errorThrown) {

             if (xhr.status === undefined || xhr.status === 0 || textStatus === 'timeout') {

                  this.tryCount++;
                  if (this.tryCount <= this.retryLimit) {
                       //重试。
                       $.ajax(this);
                        return;
                   }
                   return;
             }
           return;

    }
});


以下方法是发生ERR_EMPTY_RESPONSE错误后重复调用XMLHttpRequest2对象。

ffunction ask(tryCount:, retryLimit){

…………xhr = new XMLHttpRequest();

xhr.onload = function() { //当执行成功 会跑这里,有数据返回都叫成功,所以404也会到这里。

};

xhr.onerror = function() {  ///当执行失败 会跑这里

       if( this.status === 0 || this.status === undefined ){
             
              tryCount ++;   if(tryCount<=retryLimit){ ask(tryCount,retryLimit); }  
       }

};

xhr.timeout = 120000;  //使用超时你必须设置值,毫秒计算。
xhr.ontimeout= function() {  ///当执行遇到超时 会跑这里
      tryCount ++;   if(tryCount<=retryLimit){ ask(tryCount,retryLimit); }  
};
xhr.send();

}

ask(0, 8);

每当这个错误发生,概率为第一次访问出错,那么再次重试就正常了。不过页面上出错没法解决,只能等待。




0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有