HTML Cookie不会创建

时间:2016-05-10 12:57:14

标签: javascript html

我有创建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函数。我无法找到为什么这样做不起作用。

更新 所以在谷歌浏览器中它不会起作用,但在互联网资源管理器工作得很好,有人知道为什么吗?我想在所有浏览器中工作。

2 个答案:

答案 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=/";
}