来自localStorage问题的JSON.parse()

时间:2016-02-08 15:44:10

标签: javascript arrays json html5 local-storage

我目前正在开发一款小型浏览器游戏,我正在使用HTML localStorage来保存一些数据。

问题: 我有一个空数组,我稍后将.push()一些数据输入。我将此数组存储在localStorage中但是当我尝试从本地存储中读取时它不起作用。

Chrome开发者工具控制台给出了以下错误: 尝试解析localStorage中的数据时出现“Uncaught SyntaxError:Unexpected token u”。

这是我正在使用的代码:

var allContracts = [];
localStorage["allContracts"] = JSON.stringify(allContracts);

allContracts = JSON.parse(localStorage["allContracts"]);

代码多于此,但没有任何代码以任何方式与这些代码进行交互。

是否有一个我不知道的localStorage或JSON的怪癖并导致了这个问题? (我对JSON或localStorage不太熟悉) 我应该以不同的方式做这件事吗? 或者我只是错过了一个明显的错误?

提前致谢:)

3 个答案:

答案 0 :(得分:0)

我自己刚刚开始使用localStorqage,但看起来你应该使用window.localStorage.setItem()和window.localStorage.getItem()

答案 1 :(得分:0)

最好的方法是使用var allContracts = []; // setter localStorage.setItem("allContracts", JSON.stringify(allContracts)); //getter var allContracts = JSON.parse(localStorage.getItem("allContracts")); 界面为您提供的方法。它有localStoragelocalStorage = [] // transform the default localstorage into an array 方法,为什么不用来保护自己?

localStorage.setItem(key, value)

使用您的代码片段,您将使用自己的值覆盖{{1}}全局对象,因此您失去了功能。

你这样做:

{{1}}

你需要这个:

{{1}}

更多信息:https://developer.mozilla.org/en-US/docs/Web/API/Window/localStorage

答案 2 :(得分:-1)

你应该使用

localStorage.setItem('allContracts', JSON.stringify(allContracts));
localStorage.getItem('allContracts');

此处有更多详情: https://developer.mozilla.org/en-US/docs/Web/API/Storage