2014-02-20 55 views
0

我使用下面的函數無法使用javascript在Cookie中設置到期日期?

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; 
} 

setCookie("userName","vimalraj.s",1); 

它在「會話」不與到期時間24時段創造出餅乾。

如何解決這個問題?

UPDATE:

上面的代碼工作在我同事的電腦火狐(27.0.1) 細,它不確實爲我一樣的Firefox版本

我甚至嘗試「最大年齡」,而不是「過期」

function set_cookie (cookie_name, cookie_value, 
    lifespan_in_days, valid_domain) 
{ 
    // http://www.thesitewizard.com/javascripts/cookies.shtml 
    var domain_string = valid_domain ? 
         ("; domain=" + valid_domain) : '' ; 
    document.cookie = cookie_name + 
         "=" + encodeURIComponent(cookie_value) + 
         "; max-age=" + 60 * 60 * 
         24 * lifespan_in_days + 
         "; path=/" + domain_string ; 
} 

毫無效果......

+0

我想創建一個新的cookie相同的細節和新的過期將覆蓋現有的新的cookie。 – Strikers

+0

對不起,如果你知道這一點。確保你正在測試你的cookie的東西從一個有效的域名(本地主機是不是一個有效的域名,將導致一袋麻煩) – elmuchacho

+0

感謝您的迴應,這可能是一個問題,由於我的Firefox版本 – vimal1083

回答

1

從quirksmode.org服用。

function createCookie(name,value,days) { 
    if (days) { 
     var date = new Date(); 
     date.setTime(date.getTime()+(days*24*60*60*1000)); 
     var expires = "; expires="+date.toGMTString(); 
    } 
    else var expires = ""; 
    document.cookie = name+"="+value+expires+"; path=/"; 
} 

function readCookie(name) { 
    var nameEQ = name + "="; 
    var ca = document.cookie.split(';'); 
    for(var i=0;i < ca.length;i++) { 
     var c = ca[i]; 
     while (c.charAt(0)==' ') c = c.substring(1,c.length); 
     if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length); 
    } 
    return null; 
} 

function eraseCookie(name) { 
    createCookie(name,"",-1); 
} 

這裏是一天

的createCookie( 'ppkcookie', 'testcookie',1)

+0

quirksmode例子有問題!寫javascript的人不用花括號應該被槍殺! – elmuchacho

0

我建議你創建具有相同的cookie名新的Cookie。

現在您可以設置新的過期。 這將超過現有的cookie,因爲它們都是相同的名稱。

現在,新的cookie將有新的到期

舊Cookie

var d = new Date(); 
d.setTime(d.getTime()+(exdays*24*60*60*1000)); 
var expires = "expires="+d.toGMTString(); 
document.cookie = cname+"="+cvalue+"; "+expires; 

新的cookie

var d = new Date(); 
d.setTime(d.getTime()+(exdays*24*60*60*1000)); 
var expires = "expires="+d.toGMTString(); 
document.cookie = cname+"="+cvalue+"; "+expires; 

我希望這將有助於

+0

謝謝,我試過了,但沒有更改cookie。 – vimal1083