我是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,但这也不起作用。
答案 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)
每个Storage对象提供对键/值对列表的访问, 有时被称为物品。键是字符串。任何字符串 (包括空字符串)是一个有效的密钥。 值类似 字符串。
重点补充。您无法在sessionStorage中存储对象。
Mozilla也对此有评论:
注意:尽管可以通过标准设置和读取值 JavaScript属性访问方法使用getItem和setItem方法 推荐。
注意:请记住您存储在任何存储中的所有内容 此页面中描述的内容通过其.toString方法转换为字符串 之前存储。因此,尝试存储公共对象将导致 要存储的字符串“[object Object]”而不是对象或其对象 JSON表示。使用本机JSON解析和序列化 浏览器提供的方法是一种很好的常用存储方式 字符串格式的对象。