2011-11-18 60 views
1

我設置我的頁面上的cookie,使用這個插件:https://github.com/carhartl/jquery-cookie的jQuery設置cookie的問題

和我的文檔準備功能的添加此:

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

我的文檔準備功能我終究做一些東西,該cookie設置爲空,

$(document).ready(function() { 

    //setting the cokie 

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

}) 

但直到我收到警報爲「2」,在瀏覽器中的每一個刷新。這有什麼問題嗎?

回答

1

通過將過期時間設置爲過去來清除Cookie。

$.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,但在頁面的每次刷新,在您致電$.cookie('checkCook', '2');時,cookie會重置爲'2'。

由於$.cookie('checkCook', '2');不在您的doc.ready函數中,因此只要瀏覽器觸及它,它就會立即被調用(請記住,頁面自上而下加載),並且doc.ready塊會延遲,直到加載dom。這意味着$.cookie('checkCook', '2');代碼在之前執行doc.ready塊。這就是爲什麼你總是得到警報,指出值是'2'。 Cookie在每個頁面刷新時都會變得設置爲,並且在調用alert之前。

你可以做的是將cookie設置代碼包裝在一個函數中,並從doc.ready中調用它。這會延遲cookie的設置,直到執行之後的

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

    setCookie(); 
}); 

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