2012-10-31 135 views
33

我正在通過Javascript設置一個cookie,它工作正常,但它沒有采取我給予的過期時間。它使服用會話值,而不管我拿什麼,下面是我從herejavascript設置cookie到期時間

var now = new Date(); 
var time = now.getTime(); 
var expireTime = time + 1000*60; 
now.setTime(expireTime); 
var tempExp = 'Wed, 31 Oct 2012 08:50:17 GMT'; 
document.cookie = aaa+'='+sStr+';expires='+now.toGMTString()+';path=/'; 

我試着給硬編碼值了,但它仍然是顯示到期爲Chrome開發工具會話代碼

var tempExp = 'Wed, 31 Oct 2012 08:50:17 GMT'; 
document.cookie = aaa+'='+sStr+';expires='+tempExp+';path=/'; 

任何想法我做錯了什麼?

+0

您如何檢查cookie的到期時間? – polin

+0

polin:在chrome中按F12(或者轉到tools-> developer tools)。它會打開下面的框架,在那裏你可以檢查。 – antnewbee

+0

我知道它是怎麼來的。我的問題是你能看到到期時間嗎?我已經嘗試過console.log(document.cookie),但在那裏你可以看到cookie不是到期時間 – polin

回答

31

我認爲其確定。我已將時間設置爲1000 * 36000。

function display() { 
    var now = new Date(); 
    var time = now.getTime(); 
    var expireTime = time + 1000*36000; 
    now.setTime(expireTime); 
    var tempExp = 'Wed, 31 Oct 2012 08:50:17 GMT'; 
    document.cookie = 'cookie=ok;expires='+now.toGMTString()+';path=/'; 
    //console.log(document.cookie); 
} 

expiration

+0

爲什麼它不在我的瀏覽器中工作:(...將檢查並更新 – antnewbee

4

使用這樣

function setCookie(c_name,value,exdays) 
{ 

var exdate=new Date(); 
exdate.setDate(exdate.getDate() + exdays); 
var c_value=escape(value) + ((exdays==null) ? "" : "; expires="+exdate.toUTCString()); 
document.cookie = c_name+"="+c_value+"; path=/"; 
} 

來源:http://www.w3schools.com/js/js_cookies.asp

+1

嗨馬克過期,試過這個,但w3scools代碼不是很合適。 – antnewbee

+3

添加源代碼,將來請確保將複製的代碼歸屬到原始源代碼。 –

15

這是我寫的其他應用程序的功能。隨意重用:

function writeCookie (key, value, days) { 
    var date = new Date(); 

    // Default at 365 days. 
    days = days || 365; 

    // Get unix milliseconds at current time plus number of days 
    date.setTime(+ date + (days * 86400000)); //24 * 60 * 60 * 1000 

    window.document.cookie = key + "=" + value + "; expires=" + date.toGMTString() + "; path=/"; 

    return value; 
}; 
+0

這對我來說非常合適 – Malcor

+0

'+ date +(days * 86400000)'做什麼? –

+0

'+'在變量剛返回在這種情況下,'+ date'等同於'd.valueOf()',它也恰好是'date.getTime()'返回的值。 –

2

我想第二POLIN的回答,只是補充一點的情況下,你仍然停留。此代碼當然可以設置特定的cookie到期時間。您可能遇到的一個問題是,如果您使用Chrome並通過「http://localhost ...」或「file://」訪問您的頁面,Chrome將不會存儲Cookie。簡單的解決方法是使用一個簡單的http服務器(如節點的http服務器,如果你還沒有)並明確定位到「http://127.0.0.1」,在這種情況下,Chrome將存儲用於本地開發的cookie。這讓我掛了一下,因爲如果你不這樣做,當你在控制檯或開發工具中調查它時,你的expires鍵就會具有「會話」的價值。

3
  1. 通過使用max-age的

    • 語法一天創建的cookie:

      document.cookie = "cookieName=cookieValue; max-age=86400; path=/;"; 
      

      這將創造24小時餅乾(1天) = 24 * 60 * 60 = 86400

    • 語法刪除的cookie

      document.cookie = "cookieName=; max-age=- (any digit); path=/;"; 
      
  2. 通過使用過期

    • 語法一天創建的cookie:

      document.cookie = "cookieName=cookieValue;expires=" + new Date(Date.now() + 86400) + ";path=/;"; 
      
+1

這個答案需要改進,因爲格式化錯誤和錯別字 – Clijsters

1

document.cookie = "cookie name=cookie value; max-age = 31536000; path : /";

將設置一年的價值。