我有创建cookie的问题,我有这个代码:
window.onload = function() {
var value = readCookie('username');
if(value == null){
alert("null");
document.cookie = "username=Bob; expires=Thu, 18 Dec 2016 12:00:00 UTC";
}
else
alert(value);
}
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;
}
当页面加载时我检查cookie是否存在,如果它不存在,我弹出一个警告说是null,然后我创建了cookie,但是每次加载页面时它总是说它为null 。现在的问题在于创建cookie或readCookie函数。我无法找到为什么这样做不起作用。
更新 所以在谷歌浏览器中它不会起作用,但在互联网资源管理器工作得很好,有人知道为什么吗?我想在所有浏览器中工作。
答案 0 :(得分:1)
当我使用该代码创建HTML页面并在正常测试环境中运行时,您所描述的问题不会发生。它在第一次加载时提醒 null ,在第二次加载时提醒 Bob 。
但是,如果我告诉浏览器从file:///Users/david/tmp/jgfklgjkl/index.html
而不是我http://localhost:7007/
的测试服务器加载页面,则它始终会提醒null
。
Cookie与主机名相关联,您必须通过HTTP加载页面才能使用它们。
您可能是从本地文件加载它们,这就是问题所在,而不是您的代码。
答案 1 :(得分:-1)
尝试使用此功能读取cookie。我已经使用它太长时间了,它到目前为止工作正常
function getCookieValue(cookie_name) {
var cookie, cookies = document.cookie.split(';');
for (var i = cookies.length - 1; i >= 0; --i) {
cookie = cookies[i].split('=');
if (cookie[0].trim() === cookie_name)
return cookie[1];
}
return "";
}
如果您有兴趣,可以使用此功能添加cookie 10年。
function addCookie(name, value) {
var expire = new Date();
expire.setFullYear(expire.getFullYear() + 10);
d.cookie = name + "=" + value + "; expires=" + expire.toGMTString() + "; path=/";
}