2013-10-01 2 views
0

나는이 루프를 가지고시간 JQuery와의 값을 삭제

모든 삼초

$(window).blur(function() { 
      clearInterval(time); 
      time = setInterval(function() { 
       $.ajax({ 
        url: "@Url.Action("CheckExpiration", "admin")", 
        type: "POST", 
        success: function (data) { 
         if (data == 1) 
         { 
          window.location.href="/admin" 
         } 
        } 
       }); 
      }, 3000); 
     }); 
     $(window).focus(function() { 
      time = setInterval(function() { 
       $.ajax({ 
        url: "@Url.Action("RefreshCookies", "admin")", 
        type: "POST", 
        success: function (data) { 
         if (data == 1) { 
          alert(Expired); 
         } 
        } 
       }); 
      }, 3000); 
     }); 

하지만 난 페이지를 흐리게 때마다 그들이 모두 하나가 아닌 발사 충돌이 보인다 시간 간격을 사용하여 메신저 내가 블러 이벤트에서 시간을 정리한다고 생각 .. 현재 내 응용 프로그램에 대한 로그인을하고 난 쿠키가 만료되면 창문이 비활성이고 그것이 자동으로 쿠키가 만료되었을 때 로그인하겠다고 약속했는지 확인하고 싶습니다. 누구 도와주세요? 나는 이것을위한 해결책이 그것을하는 방법 시간의 가치를 맑게하는 것이라고 생각합니까?

+0

여기서 '시간'은 무엇입니까? 이 두 가지 방법의 바깥 쪽인가요? –

+0

두 이벤트에 서로 다른 두 시간 처리기를 사용해야한다고 생각합니다. – sudhAnsu63

답변

0

나는이 문제가 당신이 ajax라고 부르는 setInterval을 사용하고 있다고 생각한다. 심지어 간격이 중지된다는 의미는 아약스가 멈추지 않는다는 것을 의미하는 것이 아니라 비동기 적으로 작동합니다. 페이지가 흐릿 해지면 왜 해고되지 않는지.

수정하려면 아약스의 success 함수가 페이지를 흐리게하거나 포커스를 맞출 때 수행하는 것을 방지하기위한 플래그가 필요합니다. 마지막으로 서버로드를 줄이면 아약스를 다시 호출해야한다면 더 좋을 것입니다. 그래서 우리는 loopsetTimeout 재귀 기술을 사용합니다.

고정 참조 코드에 대한

희망이 도움을

// flag when is blur 
    var isBlur = false; 

    $(window).blur(function() { 

     isBlur = true; // flaged 

     (function loop() { 
      $.ajax({ 
       url: "@Url.Action("CheckExpiration", "admin")", 
       type: "POST", 
       success: function (data) { 
        if (data == 1 && isBlur) 
        { 
         window.location.href="/admin" 

         // this make sure u call it when the ajax is complete 
         setTimeout(loop, 3000); 
        } 
       } 
      }); 
     })(); 
    }); 

    $(window).focus(function() { 

     isBlur = false; // flaged 

     (function loop() { 
      $.ajax({ 
       url: "@Url.Action("RefreshCookies", "admin")", 
       type: "POST", 
       success: function (data) { 
        if (data == 1 && !isBlur) { 
         alert(Expired); 

         // this make sure u call it when the ajax is complete 
         setTimeout(loop, 3000); 
        } 
       } 
      }); 
     })(); 
    }); 

아래!