2014-12-03 1 views
0

저는 JavaScript로 작업 중입니다. 사용자가 로그인 할 때 페이지를 다시로드하려고합니다. 사용자 데이터를 지속적으로 확인하기 위해 폴링합니다. 사용자가 로그인하지 않은 경우 코드는 내가 좋아하는 워크 플로우를 만들려고 노력하고있는 아래로컬 범위에서 전역 범위의 변수를 정의하십시오.

var check; 
function poll(){ 
     return $.ajax({ 
      url: 'http://localhost:3000/poll', 
      type:'GET', 
      xhrFields: { withCredentials: true } 
     }).done(function(data){ 
       console.log(data); // if user is logged in ,server sends the user object else it doesn't 
       if(typeof data.name !== "undefined"){ 
        check = '1'; // Browser doesnt remember check was 1 after reload 
        window.location.reload(); 
        } else 
        { 
         setTimeout(function(){ poll(); }, 5000); 
        } 


       }); 
    } 

    if(typeof check == 'undefined'){  // Problem is here on reload, browser doesnt remember that i set `check = 1` in above condition. 
    setTimeout(function(){ poll(); }, 5000); 
    } 

,

1), 폴링을 계속해야 찾을 수 있습니다. wheather 사용자가 로그인했는지 여부를 계속 확인해야합니다. 사용자가 로그인하면

2), 재로드를 자동으로 페이지와 폴링

+0

"window.parent.check"를 "check"로 바꾸시겠습니까?하지만 페이지를 새로 고침하면 전체 js가 다시로드됩니다. GET 파라미터로 페이지를 다시 불러 와야합니다. – Hacketo

+0

왜'window.parent.check'를 사용합니까? 이것은 iframe과 결합해서 만 유용 할 것이지만'iframe'에 대해서는 언급하지 않았으므로'window.parent'가 사용되는 것에 대한 오해가있을 수 있습니다. 'iframe'을 사용해도 코드가별로 민감하지 않습니다. –

+0

@Hacketo "확인"을 시도했지만 작동하지 않습니다. 다시로드 기능에 대한 일부 매개 변수를 찾는 방법을 찾고 있었지만 성공하지는 않았습니다. 혼란을 피하기 위해 window.parent.check를 제거합니다. – NeiL

답변

0

당신은 브라우저 나 쿠키의 로컬 스토리지 (HTML5)를 사용할 수 있습니다 중지합니다.

+0

서버 측을 사용할 수 없습니다. 클라이언트 측에서 가능합니까? – NeiL

+1

@NeiL : 실제로 대답을 읽었습니까? 서버 사용을 권장하지 않습니다. – Bergi

관련 문제