如何使用预定义属性设置cookie

时间:2012-05-05 21:09:09

标签: javascript

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

4 个答案:

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

答案 1 :(得分:0)

如果你在jquery世界,你可能想看看jquery cookie plugin - 你可以说:

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

并且相对无痛地设置参数。

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

答案 2 :(得分:0)

试试这样:

var now = new Date();
var expire = new Date(now.getTime() + (30 * 24 * 60 * 60 * 1000));
document.cookie = 'username=id' + ';expires=' + expire.toGMTString();

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