admin管理员组文章数量:1277899
I have a simple array that I'm trying to JSON encode and set as a cookie. I am using the json2.js script to encode to JSON. I am using the following code to set the 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=/";
}
After converting the array to JSON, and logging it in console, I get:
["1", "2"]
which is what I would expect. I then read out the cookie with the following function
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;
}
When I read out the cookie and log it in the console, I get:
1,2
suggesting that its a string and no longer a JSON encoded object. I would like to be able to set a cookie an a JSON encoded object, read it out and parse the JSON object, and finally perform operations on the data. My question is thus, how do you send a JSON encoded object to the cookie in such a way that I can parse it as JSON when I read it out?
Thanks as always!
I have a simple array that I'm trying to JSON encode and set as a cookie. I am using the json2.js script to encode to JSON. I am using the following code to set the 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=/";
}
After converting the array to JSON, and logging it in console, I get:
["1", "2"]
which is what I would expect. I then read out the cookie with the following function
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;
}
When I read out the cookie and log it in the console, I get:
1,2
suggesting that its a string and no longer a JSON encoded object. I would like to be able to set a cookie an a JSON encoded object, read it out and parse the JSON object, and finally perform operations on the data. My question is thus, how do you send a JSON encoded object to the cookie in such a way that I can parse it as JSON when I read it out?
Thanks as always!
Share Improve this question asked May 22, 2011 at 19:16 tollmanztollmanz 3,2234 gold badges30 silver badges34 bronze badges3 Answers
Reset to default 5Change this:
JSON.stringify(ids);
setCookie(cookieName, ids, 1);
To this:
var str = JSON.stringify(ids);
setCookie(cookieName, str, 1);
I don't see you actually using the result of the JSON stringification:
jQuery(document).ready(function(){
var ids = ['1', '2'];
setCookie(cookieName, JSON.stringify(ids), 1);
});
Try this instead
Don’t use these cookie functions, they are flawed. setCookie
fails to encode the name and value properly and getCookie
fails for cookies with a mon suffix (see my answer to Javascript getCookie functions).
For setCookie
I would use this:
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=/";
}
本文标签: javascriptJSON encoded array converted to string when saved as cookieStack Overflow
版权声明:本文标题:javascript - JSON encoded array converted to string when saved as cookie - Stack Overflow 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.betaflare.com/web/1741256328a2366745.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论