我一直在搜索这几个小时仍然没有解决我的问题:无法检查localStorage
中是否存在密钥。
在我的聊天应用程序中,一旦用户打开一个新选项卡,我想检查是否已经注册用户,我使用localStorage变量以下列方式执行此操作:
window.addEventListener('load', function () {
var s=localStorage.getItem("localStor");
if (s === null){
console.log("is null"); //does not enter here
}else{
console.log(s); // prints [object *O*bject]
console.log(JSON.parse(s).name); //getting an error (see below)
}
}, false);
解析时我收到错误:
Uncaught SyntaxError:位置1的JSON中出现意外的标记o 在JSON.parse(
<anonymous>
)
我在localStor
中设置localStorage
项的第一个地方仅在注册后,它位于仅在单击按钮HTML
元素时调用的函数内。但从逻辑上讲,它不应该从第一个地方输入else
。
知道为什么这不起作用?任何帮助表示赞赏。
答案 0 :(得分:2)
在localStorage
存储之前,您似乎忘了序列化对象,需要使用
localStorage.setItem('localStor', JSON.stringify(yourObject));
然后这应该按预期工作。
由于您localStorage
中似乎存在恶意项目,您可能需要重置localStorage
并重试:
localStorage.clear()
答案 1 :(得分:-1)
在将对象放入本地存储之前,您需要使用JSON.stringify
序列化对象。
您的代码首先将localStor
对象放在本地存储中吗?如果是这样,当你这样做时,它需要在被放入之前被序列化,以便以后可以使用JSON.parse
成功阅读。
如果localStorage.getItem
未返回null,则您请求的密钥位于localStorage中。它的回报价值不在于。事实仍然是你从getter获取了一个非序列化对象,所以你需要弄清楚该对象被错误地放入localStorage
的位置。