gpt4 book ai didi

javascript - 本地存储的 json 数组正在打印,但 json 的值在 cordova 应用程序中给出未定义

转载 作者:行者123 更新时间:2023-11-28 07:41:49 25 4
gpt4 key购买 nike

您好,我是 JSON 新手,我已经搜索了很多,但没有任何效果对我有用。我的问题是我使用 JSON 中的本地存储保存数据,当我尝试打印数组时,它工作正常。但它没有给出值。

这是我用 JSON 存储数据的代码-

var user;
var users;
function saveData(){

if ('localStorage' in window && window['localStorage'] !== null) {
try {
user = JSON.stringify({
email : $("#email").val(),
timestamp : $("#time").val(),
}),

users = localStorage.getItem('user');
users = users ? JSON.parse(users) : [];
users.push(user);

localStorage.setItem("user", JSON.stringify(users));
alert("The data was saved.");
return true;
} catch (e) {
if (e == QUOTA_EXCEEDED_ERR) {
alert('Quota exceeded!');
}
}
} else {
alert('Cannot store user preferences as your browser do not support local storage');
}
}

我在这里得到这个

  function showData(user_email){
user_email = {};
user_email = JSON.parse(localStorage.getItem("user"));
for(index in user_email){
alert(user_email[index].email);
}
}

如果我正在打印

alert(user_email[index]);

它工作正常,但是

 alert(user_email[index].email);

这给了我未定义的信息。提前感谢您的帮助。

最佳答案

在将用户对象推送到数组之前,不需要对其进行字符串化。 Users 数组是对象数组,而不是字符串。否则,您将在 JSON.parse(localStorage.getItem("user")) 后为用户返回一个字符串,而不是预期的对象。

应该是:

user = { 
email : $("#email").val(),
timestamp : $("#time").val(),
};

关于javascript - 本地存储的 json 数组正在打印,但 json 的值在 cordova 应用程序中给出未定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27937898/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com