开发者

How to put an array of javascript object in a cookie?

开发者 https://www.devze.com 2022-12-13 17:27 出处:网络
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?

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.

0

精彩评论

暂无评论...
验证码 换一张
取 消