无法使用javascript在cookie中设置到期日期?

时间:2014-02-20 08:55:16

标签: javascript session cookies browser

我正在使用以下功能

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

它在“会话”中创建cookie而不是24小时到期时间。

如何解决这个问题?

更新:

以上代码在我同事的电脑Firefox(27.0.1)中运行正常 它对我来说不适用于Firefox版本

我甚至试过“max-age”而不是“expires”

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

没有任何效果......

2 个答案:

答案 0 :(得分: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(&#39; ppkcookie&#39;&#39; testcookie&#39;,1)

答案 1 :(得分: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;

我希望这会有所帮助