SessionStorage似乎仍然是空的

SessionStorage seems to remain empty

本文关键字:仍然是 SessionStorage      更新时间:2023-09-26

我是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,但也没有工作。

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

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);

sessionStorage不能存储对象,只能存储字符串。

如果你想存储其他东西,你必须使用JSON。

从文档中

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

重点补充道。你不能在sessionStorage中存储对象。

Mozilla对此也有注释:

注意:虽然这些值可以通过标准来设置和读取JavaScript属性访问方法getItem和setItem方法的使用建议。

注意:请记住,您在任何存储中存储的所有内容通过它的.toString方法转换为字符串在储存之前。所以试图存储一个普通的对象会导致字符串"[object object]"要存储,而不是对象或其JSON表示。使用原生JSON解析和序列化方法是一种很好的常用的存储方法对象的字符串格式