SessionStorage似乎仍然是空的

时间:2011-09-06 19:21:32

标签: javascript html5

我是HTML5 / Javascript的新手,我想有一个概念性的问题。我使用Aptana作为我的环境,它使用FireFox进行浏览器调试。

以下是相关代码:

var req = new ContactRequest("Mister Peachy", "peach.png", "One Liner Message" );

sessionStorage.Requests = new Array();
sessionStorage.Requests[0] = req;

req = new ContactRequest("Anon Ymous", "person.png", "Another one line msg");

sessionStorage.Requests[1] = req;

问题似乎是sessionStorage.Requests总是等于“”。我尝试使用.setItem,但这也不起作用。

3 个答案:

答案 0 :(得分:2)

您需要做的是将数据字符串化以存储并解析它以进行检索。这是我写的一个小界面

App.session = (function () {
  var self = {};

  self.get = function (key) {
    var b = sessionStorage.getItem(key);
    return b ? JSON.parse(b) : null;
  }

  self.set = function (key, value) {
    var b = JSON.stringify(value);
    sessionStorage.setItem(key, b);
  }

  return self;
})();

var session = App.session;
session.set('foo', 'bar');
var bar = session.get('foo');
console.log(bar);

答案 1 :(得分:1)

sessionStorage无法存储对象,它只能存储字符串。

如果您想存储任何其他内容,则必须使用JSON。

答案 2 :(得分:1)

来自documentation

  

每个Storage对象提供对键/值对列表的访问,   有时被称为物品。键是字符串。任何字符串   (包括空字符串)是一个有效的密钥。 值类似   字符串。

重点补充。您无法在sessionStorage中存储对象。

Mozilla也对此有评论:

  

注意:尽管可以通过标准设置和读取值   JavaScript属性访问方法使用getItem和setItem方法   推荐。

     

注意:请记住您存储在任何存储中的所有内容   此页面中描述的内容通过其.toString方法转换为字符串   之前存储。因此,尝试存储公共对象将导致   要存储的字符串“[object Object]”而不是对象或其对象   JSON表示。使用本机JSON解析和序列化   浏览器提供的方法是一种很好的常用存储方式   字符串格式的对象。