2017-08-15 75 views
1

我想存储cookie内的对象数组。在cookie中存储对象数组,纯javascript,没有jquery?

不使用jQuery或角度。

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

你可以举一个这个对象的例子,也许显示你的预期输出应该是什么?谢谢。 – NewToJS

+0

*“我试图存储cookie内的对象数组”*您真的要使用**服务器**上的对象吗?如果没有,饼干是一个不好的选择。使用网络存储,所以你不会膨胀请求到你的服务器,并且因为API显着**更好。 –

+1

似乎没有你发布的特定于jQuery或角色的代码的任何方面... – Pineda

回答

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" 
    } 
] 
*/ 
0

你在本地文件系统,而不是一个服务器上运行呢? 根据浏览器使用file:///协议进行浏览时,Cookies未设置。

+2

请发表评论,因为它不是一个完整的答案 – Kai

相关问题