Is it possible to put an array of Javascript objects and retrieve it again? Is there an easy wa开发者_C百科y? Do I have to serialize as a String before storing them in a cookie?
The next code shows what I want to achieve:
writeCookie("items",[new Item(3,15.00,2,"GR-10 Senderos"),new Item(4,45,1,"GR-10 Senderos<br/>GR 88 Senderos del Jarama<br/>Camino del Cid")],5*365);
$(document).ready(function() {
var items = readCookie("items");
});
function writeCookie(name, value, days) {
// By default, there is no expiration so the cookie is temporary
var expires = "";
// Specifying a number of days makes the cookie persistent
if (days) {
var date = new Date();
date.setTime(date.getTime() + (days * 24 * 60 * 60 * 1000));
expires = "; expires=" + date.toGMTString();
}
// Set the cookie to the name, value, and expiration date
document.cookie = name + "=" + value + expires + "; path=/";
}
function readCookie(name) {
// Find the specified cookie and return its value
var searchName = name + "=";
var cookies = document.cookie.split(';');
for(var i=0; i < cookies.length; i++) {
var c = cookies[i];
while (c.charAt(0) == ' ')
c = c.substring(1, c.length);
if (c.indexOf(searchName) == 0)
return c.substring(searchName.length, c.length);
}
return null;
}
function eraseCookie(name) {
// Erase the specified cookie
writeCookie(name, "", -1);
}
Thanks in advance!
I would JSON encode it as a string, and then store that in the cookie.
Heck yeah you have to serialize it as a string. Garsh! Remember, cookies are just HTTP headers which, being sent over the network, are just byte arrays. But not just any bytes. HTTP headers pretty much follow the MIME spec which only allows plain 7-bit ASCII. So serialize it, just like Marius says. Use json.org/json2.js. Or roll your own serialization with String.join.
精彩评论