鍍金池/ 問(wèn)答/PHP  HTML/ 想不懂這個(gè)問(wèn)題出在哪里

想不懂這個(gè)問(wèn)題出在哪里

jQuery 代碼:

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

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

    });
}

這個(gè)是ajax 在一個(gè)A界面輪詢(xún),當(dāng)查找到/Home/Index有數(shù)據(jù)時(shí),停止事件,
跑到/Home/reg_result_no_card界面打印,打印是會(huì)自動(dòng)返回這個(gè)A這個(gè)界面的
問(wèn)題來(lái)了: 偶爾有時(shí)候不跑去打印界面,而是F5刷新網(wǎng)頁(yè)就跑去打印?
這能是什么原因造成

回答
編輯回答
怣痛

這個(gè)情況很詭異,也是題主的邏輯有問(wèn)題,setInterval大概每3500ms執(zhí)行一次,但是ajax異步的結(jié)果什么時(shí)候返回呢?這個(gè)時(shí)間不確定,所以邏輯不好,建議修改:

  1. 在ajax添加timeout
  2. 不使用setInterval,而是在ajax的返回中根據(jù)判定使用來(lái)遞歸調(diào)用自身;
function ChangeTime() {

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

    });
}
2017年2月23日 06:19