第一种方式
var ajax_check = false,error_num = 0;
settiming();
function settiming(){
ajax_check = true;
$.ajax({
url: "/index.php/index/index/getInfo",
type: 'post',
dataType: 'json',
data:{'mid':$('#id').val()},
success: function (result) {
setInfo(result);
setTimeout(function () {
settiming();
},2300);
ajax_check = false;
error_num = 0;
},
error:function (XMLHttpRequest, textStatus, errorThrown){
if(ajax_check){
error_num++;
settiming();
}
if(error_num>12){
location.reload();
}
},
complete: function (XHR, TS){
XHR = null;//清理内存
}
})
}
第二种方式:
ajax_check_fun();
function ajax_check_fun(){
if(ajax_check){
console.log('1')
error_num++;
}
if(error_num>2){
console.log('2')
settiming();
}
if(error_num>12){
location.reload();
}
setTimeout(function () {
ajax_check_fun();
},1300);
}
结论:最开始我是用了第一种方式,然而似乎在后端代码出问题情况下,第一种可以用,但是网速差到不能返回信息时候,它也停止了,遂写了第二种,可保证后台代码和网速出现bug有个防范的机制,此处加上ajax报警机制效果会更好