想不懂这个问题出在哪里

jQuery 代码:

var iCount =  setInterval(ChangeTime, 3500);
function ChangeTime() {

    $.ajax({
        type: "POST",
        url: "/Home/Index",
        success: function(msg){
               if(msg == 1){
                  clearInterval(iCount); //停止刷新事件,防止出现请求多次
                  location.href = '/Home/reg_result_no_card';
                  return false;
               }
        }

    });
}

这个是ajax 在一个A界面轮询,当查找到/Home/Index有数据时,停止事件,
跑到/Home/reg_result_no_card界面打印,打印是会自动返回这个A这个界面的
问题来了: 偶尔有时候不跑去打印界面,而是F5刷新网页就跑去打印?
这能是什么原因造成

阅读 1.8k
1 个回答

这个情况很诡异,也是题主的逻辑有问题,setInterval大概每3500ms执行一次,但是ajax异步的结果什么时候返回呢?这个时间不确定,所以逻辑不好,建议修改:

  1. 在ajax添加timeout
  2. 不使用setInterval,而是在ajax的返回中根据判定使用来递归调用自身;
function ChangeTime() {

    $.ajax({
        type: "POST",
        url: "/Home/Index",
        success: function(msg){
               if(msg == 1){
                  //clearInterval(iCount); //停止刷新事件,防止出现请求多次
                  location.href = '/Home/reg_result_no_card';
                  return false;
               } else {
                   ChangeTime();
               }
        }

    });
}
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题