使用纯js在cookie中存储多个值

时间:2015-02-19 22:28:24

标签: javascript cookies

我正在尝试在Cookie中存储多个值(integerboolean),我想将;用作分隔符;

    function setCookie(name, downloaded, dontAskAgain, days) { 
        deleteCookie(name);
        if (days) {
            var date = new Date();
            date.setTime(date.getTime() + (days * 24 * 60 * 60 * 1000));
            var expires = "; expires=" + date.toGMTString();
        }
        else var expires = "";
        var cdata = downloaded + delimiter + dontAskAgain;
        document.cookie = name +="=" + cdata + ";" + expires + "; path=/";         
    }
    function deleteCookie(name) {
        document.cookie = [name, '=; expires=Thu, 01-Jan-1970 00:00:01 GMT; path=/; domain=.', window.location.host.toString()].join('');
    }

我在这里做错了什么,导致新的价值

setCookie("MyCookie", 0, false, 31)

未设定。 有没有更好的方法只使用js(而不是jquery lib。)?

1 个答案:

答案 0 :(得分:0)

浏览器使用分号进行本机cookie分隔,而你的cookie会让它感到困惑。

尝试:

document.cookie = [name, encodeURIComponent('=; expires=Thu, 01-Jan-1970 00:00:01 GMT; path=/; domain=.'), window.location.host.toString()].join('');

    //or

document.cookie =  encodeURIComponent([name,'=; expires=Thu, 01-Jan-1970 00:00:01 GMT; path=/; domain=.', window.location.host.toString()].join(''));

在阅读cookie时你必须解码它。