2011-11-18 3 views
1

나는이 플러그인을 사용하여, 내 페이지에서 쿠키를 설정하고있다 : 나는 내 문서 준비 함수 뒤에JQuery와 설정 쿠키 문제

$.cookie('checkCook', '2') 

:

그리고 난이 추가 내 문서 준비 기능 중 https://github.com/carhartl/jquery-cookie 몇 가지 물건을하고 null로 쿠키를 설정,

$(document).ready(function() { 

    //setting the cokie 

    if($.cookie('checkCook') == '2'){ 
     alert($.cookie('checkCook')); 
     $.cookie('checkCook', null); 
    } 

}) 

을하지만까지 난 내 브라우저의 모든 새로 고침에서, '2'와 같은 경고를 얻고있다. 이게 뭐가 잘못 됐니?

답변

1

쿠키는 만료 시간을 과거로 설정하여 지워집니다. 만약 내가 제대로 이해하고

$.cookie('checkCook', null, {expires: new Date(1)}) 
+1

설명서의 내용과 다릅니다. '$ .cookie ('checkCook', null)'이면 충분합니다. –

+0

그래, 최신 플러그인 버전은 리터럴 null을 값으로 주면 후드에 지나치게 만료되는 것 같습니다. –

1

, 당신은 다음과 같이 설정 뭔가를 :

$(document).ready(function() { 
    //setting the cokie 
    if($.cookie('checkCook') == '2'){ 
     alert($.cookie('checkCook')); 
     $.cookie('checkCook', null); 
    } 
}); 
$.cookie('checkCook', '2'); 

당신이 $.cookie('checkCook', null);에 전화가 쿠키를 삭제되는 것을 기대하고 있지만, 페이지마다 새로 고침에, $.cookie('checkCook', '2');으로 전화하면 쿠키가 '2'로 재설정됩니다.

$.cookie('checkCook', '2');은 doc.ready 함수 외부에 있으므로 브라우저가 페이지를 방문하자마자 호출되며 (페이지가 맨 아래로로드 됨) dom이로드 될 때까지 doc.ready 블록이 지연됩니다. 이는 $.cookie('checkCook', '2'); 코드가 보다 먼저 실행되고 doc.ready 블록이 실행되었음을 의미합니다. 그래서 당신은 항상 가치가 '2'라는 경고를 받는다. 모든 페이지를 새로 고칠 때와 alert을 호출하기 전에 쿠키가 으로 설정되고이됩니다.

당신이 할 수있는 일은 쿠키 설정 코드를 함수에 넣고 doc.ready에서 호출하는 것입니다. 그러면 경고 코드가 실행 된 후 까지 쿠키 설정이 지연됩니다.

$(document).ready(function() { 
    //setting the cokie 
    if($.cookie('checkCook') == '2'){ 
     alert($.cookie('checkCook')); 
     $.cookie('checkCook', null); 
    } 

    setCookie(); 
}); 

function setCookie() 
{ 
    $.cookie('checkCook', '2'); 
}