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