【问题标题】:Can't able to set expiry date in cookie using javascript?无法使用 javascript 在 cookie 中设置到期日期?
【发布时间】:2014-02-20 17:27:32
【问题描述】:

我正在使用以下功能

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

没有任何效果...

【问题讨论】:

  • 我认为创建一个具有相同详细信息和新过期的新 cookie 将用新的 cookie 覆盖现有 cookie。
  • 很抱歉,如果您知道这一点。确保您正在从有效域测试您的 cookie 内容(localhost 不是有效域,会导致一大堆麻烦)
  • 感谢您的回复,可能是我的Firefox版本问题
  • 我的代码在 Google Chrome 中运行良好,我在 Firefox 中肯定有问题

标签: javascript session cookies browser


【解决方案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)

【讨论】:

  • quirksmode 示例与否!写javascript省略花括号的人应该被枪杀!
【解决方案2】:

我建议您创建一个具有相同 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;

我希望这会有所帮助

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-05
    相关资源
    最近更新 更多