添加和检索会话存储
Adding and retrieving from sessionStorage
我正在使用Angulars$window sessionStorage服务。我需要做的是将服务中承诺的成功添加到 sessionStorage 中,以便可以在整个应用程序中使用它。
这是我一直在尝试的:
$window.sessionStorage.setItem('promoImages',success);
成功是从服务返回的对象数组,在此结构中:
[{
promotion: {},
url: 'images/image1.png'
},
{},
{}];
因此,应通过上面的行将此结构分配给促销图像。但是,当我像这样打印值时:
$log.debug('Promo from session:'+JSON.stringify($window.sessionStorage.promoImages));
我得到以下信息:
Promo from session:"[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]"
如果我对成功数组和会话数组进行相同的移动,我会得到不同的结果 - 会话数组返回未定义 - 为什么?
$log.debug('Success:'+JSON.stringify(success[0].url));
// Returns url above
$log.debug('Promo from session:'+JSON.stringify($window.sessionStorage.promoImages[0].url));
// Returns undefined
我在会话存储方面做错了什么?会话存储只能添加到创建它的同一文件中吗?(我不这么认为)。
谢谢
编辑
感谢下面的人的回答 - 但我认为值得指出的是,在我的对象上使用 stringify 函数时,实际上在对象中添加了正斜杠代替空格......
您只能将字符串存储在 SessionStorage 中。在调用setItem()
之前字符串化对象
来自 MDN:
存储.setItem
参数
键名称
包含要创建/更新的密钥名称的 DOMString。
键值
一个 DOMString,其中包含要为正在创建/更新的密钥提供的值。
您只能在 sessionStorage 中存储字符串,因此在存储它之前,首先执行 stringify(),然后在检索时再次将其解析为 JSON。
保存时:
$window.sessionStorage.setItem("JsonObj", JSON.stringify([
{url: ""},{},{}
]));
检索时:
JSON.parse($window.sessionStorage.JsonObj)[0].url
相关文章:
- '会话'未定义-会话存储的Este JS/Express/Redis
- 当会话存储阵列中存在大量元素时,如何从中删除元素
- 使用会话Javascript存储数据
- Django会话与浏览器本地存储
- C#/Javascript会话存储
- 将会话登录页存储在cookie中以进行表单解析(通过隐藏字段)
- Javascript 会话存储变量未正确保存
- 不会删除会话存储
- Meteor会话变量未存储数组
- 如何改进此会话存储命名系统/for循环
- 测试本地存储/会话存储最大数据量
- 在 javascript var 中存储会话变量时脚本停止
- 会话节点.js + 护照.js + Redis,按 user.id 存储会话
- 烧瓶:如何手动存储会话数据
- 为什么在php脚本中存储会话数据会干扰Ajax脚本
- Java -如何使用gson库解析json响应+存储会话id,以便它可以被gae中的javascript函数访问
- 多个HTTP客户端请求不存储会话数据
- 存储会话的复选框信息
- 在表单提交时存储会话
- 使用node - js和“connect-mongostore”存储会话