首页 > 解决方案 > 带有 JSON.stringify 的 sessionStorage.setItem 导致 javascript 函数失败

问题描述

我在 sessionStorage 中存储了两个项目,一个整数和一个字符串数组。我可以在 Chrome 开发控制台(应用程序 - sessionStorage)中看到这些项目,它们是正确的。

现在在 Chrome 开发控制台中显示的值是:

HTTP_Index 4
HTTP_History ["Start","text_14","text_7","text_10"]

在一个 javascript 函数中,我从 sessionStorage 中检索它们:

var HTTP_Index = sessionStorage.getItem(HTTP_Index);
var HTTP_History = sessionStorage.getItem(HTTP_History);

p_Index = JSON.parse(HTTP_Index);
p_History = JSON.parse(HTTP_History);

我减少索引:

p_Index = p_Index - 1;
console.log("HTTP_Index Now " + p_Index);

并且日志显示该值现在为 3。

接下来我将值 p_Index 存储回 sessionStorage:

sessionStorage.setItem("HTTP_Index", JSON.stringify({ "p_Index" });

无论我是否将 p_Index 括在引号中,开发控制台现在都将函数显示为“未定义”。

接下来我试着这样做:

sessionStorage.setItem("HTTP_Index", JSON.stringify({ "p_Index" });

但同样的问题。所以最后我尝试了这个:

var obj = { HTTP_Index: p_Index };
var objJSON = JSON.stringify(obj);
sessionStorage.setItem(objJSON);

但 Chrome 开发控制台显示:

Uncaught TypeError: Failed to execute 'setItem' on 'Storage': 2 arguments required, but only 1 present.

将 JSON.stringify 用于 sessionStorage.setItem 时我做错了什么?

谢谢你的帮助。

标签: javascriptjson

解决方案


在您的最新示例中:

var obj = { HTTP_Index: p_Index };
var objJSON = JSON.stringify(obj);
sessionStorage.setItem(objJSON);

sessionStorage.setItem 第一个参数必须是您要设置的键,第二个是您要存储的数据。所以你错过了钥匙/名字。


推荐阅读