2012-08-08 75 views
2

我已經創建了一個Django網站,並且需要一個cookie來存儲並可從網站的任何部分讀取。它的JavaScript是在我需要它的每一個部分,但由於某種原因,Cookie本身被分開存儲每個頁面。例如。如果cookie在一個頁面上等於「設置」,則它可以在另一頁上未定義。下面是我使用創造,獲取和讀取cookie的代碼(以下簡稱「createBannerCookie()」當一個特定的按鈕,每個頁面上發現,被壓方法被調用) -如何在javascript中創建全局cookie?

<script type="text/javascript"> 
$(document).ready(function() { 
    $('#banner').hide(); 
    checkBannerCookie(); 
}); 

function createBannerCookie() 
{ 
    $('#banner').hide(); 
    var exdate=new Date(); 
    exdate.setDate(exdate.getDate() + 3); 
    var c_value=escape("set") + ((exdate==null) ? "" : "; expires="+exdate.toUTCString()); 
    document.cookie='banner=' + c_value; 
} 

function getCookie(c_name) 
{ 
    var i,x,y,ARRcookies=document.cookie.split(";"); 
    for (i=0;i<ARRcookies.length;i++) 
    { 
    x=ARRcookies[i].substr(0,ARRcookies[i].indexOf("=")); 
    y=ARRcookies[i].substr(ARRcookies[i].indexOf("=")+1); 
    x=x.replace(/^\s+|\s+$/g,""); 
    if (x==c_name) 
    { 
     return unescape(y); 
    } 
    } 
} 

function checkBannerCookie() 
{ 
    var banner=getCookie("banner"); 
    if (banner!=null && banner!="") 
    { 
    $('#banner').hide(); 
    } 
    else 
    { 
    $('#banner').show(); 
    } 
} 
</script> 

有什麼建議?

回答

7

默認情況下,cookie是隻對網頁在同一目錄訪問作爲最初創建cookie的網頁。請嘗試添加「path = /」選項。例如

document.cookie = 
    'propertyName=test; path=/' 
0

SImon,

我認爲你的問題是你的cookies的到期日期。它看起來像你設置它們在創建後過3毫秒。

嘗試這樣的事情在你的「createBannerCookie」功能(而不是W3Schools的版本):

function createBannerCookie() 
{ 
    $('#banner').hide(); 
    var exdate=new Date(); 
    exdate.setTime(exdate.getTime()+(3*24*60*60*1000)); // the 3 in that math is your days 
    var c_value=escape("set") + ((exdate==null) ? "" : "; expires="+exdate.toUTCString()); 
    document.cookie='banner=' + c_value; 
} 

參考:http://www.quirksmode.org/js/cookies.html

+0

這似乎並不奏效 - 如果是這種情況,Cookie將無法在只有一些頁面上工作。 – SImon 2012-08-08 17:59:04