0

我是 JavaScript 新手,所以我有一个简单的问题,我想使用带有 name=username、value=id 和 expiry date=30days 的 JavaScript 设置 cookie。我尝试了一些示例,但是当我通过浏览器检查 cookie 时,它​​显示名称:未定义内容:未定义过期:在会话结束时

4

4 回答 4

0

如果您在 jquery 世界中,您可能想查看jquery cookie 插件- 您可以在其中说:

$.cookie('the_cookie', 'the_value', { expires: 7, path: '/' });

并且设置参数相对轻松。

使用 cookie 时,记住您设置查询的域和路径很重要。从将查询设置为 path: '/' 和 domain: 'yourdomain.com' 开始可能是安全的(以便它适用于所有子域)。

于 2012-05-05T21:14:28.567 回答
0

试试这样:

var now = new Date();
var expire = new Date(now.getTime() + (30 * 24 * 60 * 60 * 1000));
document.cookie = 'username=id' + ';expires=' + expire.toGMTString();
于 2012-05-05T21:14:33.383 回答
0

一个例子是:

function setCookie(name, value, expires, path, domain, secure) {
    document.cookie = name + "=" + escape(value) +
        ((expires) ? "; expires=" + expires : "") +
        ((path) ? "; path=" + path : "") +
        ((domain) ? "; domain=" + domain : "") +
        ((secure) ? "; secure" : "");
}

var expires = new Date(new Date().getTime()+30*24*60*60*1000).toGMTString();
setCookie("username", "id", expires);
于 2012-05-05T21:12:06.163 回答
0

确保您使用的是根域以确保 cookie 可跨子域访问(例如:domain.com 而不是 www.domain.com)。

您是否收到所有浏览器的相同结果,或者这只是 Internet Explorer 问题?

我经常使用这两个功能而没有问题:

function n__readCookie(n__name)
{
    var n__nameEQ = n__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(n__nameEQ) == 0) 
        {  return c.substring(n__nameEQ.length,c.length);  }
    }
    return false;
}

function n__createCookie(n__name, n__value, n__days, n__domain)
{
    if (n__days)
    {
        var n__date = new Date();
        n__date.setTime(n__date.getTime()+(n__days*24*60*60*1000));
        var n__expires = "; expires="+n__date.toGMTString();
    }
    else
    {
        var n__expires = "";
    }
    document.cookie = n__name+"="+n__value+n__expires+"; path=/;domain=" + n__domain;
}
于 2012-05-05T22:14:49.507 回答