我有一个简单的数组,我正在尝试JSON编码并设置为cookie。我使用json2.js脚本编码为JSON。我使用以下代码来设置cookie:
jQuery(document).ready(function(){
var ids = ['1', '2'];
JSON.stringify(ids);
setCookie(cookieName, ids, 1);
});
function setCookie(name,value,days) {
if (days) {
var date = new Date();
date.setTime(date.getTime()+(days*24*60*60*1000));
var expires = "; expires="+date.toGMTString();
}
else var expires = "";
document.cookie = name+"="+value+expires+"; path=/";
}
将数组转换为JSON并将其记录在控制台后,我得到:
["1", "2"]
这是我所期待的。然后我用以下函数读出cookie
function getCookie(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并将其记录在控制台中时,我得到:
1,2
建议它是一个字符串而不再是JSON编码对象。我希望能够将cookie设置为JSON编码对象,将其读出并解析JSON对象,最后对数据执行操作。因此,我的问题是,如何将这样的JSON编码对象发送到cookie,以便在我读出它时将其解析为JSON?
一如既往地谢谢!
答案 0 :(得分:6)
改变这个:
JSON.stringify(ids);
setCookie(cookieName, ids, 1);
对此:
var str = JSON.stringify(ids);
setCookie(cookieName, str, 1);
答案 1 :(得分:2)
我没有看到你实际使用JSON字符串化的结果:
jQuery(document).ready(function(){
var ids = ['1', '2'];
setCookie(cookieName, JSON.stringify(ids), 1);
});
试试这个
答案 2 :(得分:2)
不要使用这些cookie功能,它们是有缺陷的。 setCookie
无法正确编码名称和值,getCookie
无法使用具有公共后缀的Cookie(请参阅my answer to Javascript getCookie functions)。
setCookie
我会用这个:
function setCookie(name, value, days) {
var expires = "";
if (days > 0) {
var date = new Date();
date.setTime(date.getTime()+(days*24*60*60*1000));
expires = "; expires="+date.toGMTString();
}
document.cookie = encodeURIComponent(name)+"="+encodeURIComponent(value)+expires+"; path=/";
}