存储cookie中的对象数组,纯javascript,没有jquery?

时间:2017-08-15 17:10:52

标签: javascript

我正在尝试在cookie中存储对象数组。

不使用jQuery或angular。

function setCook (name,value) {
  var cookie = [name, '=', JSON.stringify(value)].join('');
  document.cookie = cookie;
}

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;
}

2 个答案:

答案 0 :(得分:0)

只需JSON.parse您的回复:

https://repl.it/KKoF

function setCook(name, value) {
    var cookie = [
        name,
        '=',
        JSON.stringify(value)
    ].join('');
    document.cookie = cookie;
}

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 JSON.parse(
                c.substring(nameEQ.length, c.length)
            );
        }
    }
    return null;
}

setCook('foo', `[
    {
        "qux": "boz"
    },
    {
        "baz": "zot"
    }
]`);
let obj = readCookie('foo');

console.log(obj);

/*
[
    {
        "qux": "boz"
    },
    {
        "baz": "zot"
    }
]
*/

答案 1 :(得分:0)

您是在本地文件系统中运行它而不是在服务器上运行吗? 使用file:///协议进行浏览时,不会设置Cookie,具体取决于浏览器。