我正在创建一个关于创建网站的学校项目。我已经设法在注册帐户时将用户数据保存到本地存储中。当我昨天尝试使用以下代码时,代码可以工作: 关键' currentUser'以用户身份登录后会出现在本地存储中。但是,在我清除了本地存储(阵列中的用户太多)并再次重新运行代码后,currentUser将不再显示在本地存储中。 这是我的代码: 从编辑个人资料页面: `
<script>
var currentUser=null;
document.addEventListener("DOMContentLoaded",loadUserData);
function loadUserData() {
currentUser = localStorage.getItem("currentUser");
if(currentUser!=null) {
currentUser = JSON.parse(currentUser);
}
}
</script>
以上代码加上登录html中的代码显示currentUser为本地存储中的密钥(应仅在以当前用户身份登录时显示) 从登录页面:
function checkUser(ev) {
ev.preventDefault();
var status=false;
var username = document.getElementById("username").value;
var password = document.getElementById("password").value;
for(var i=0;i<userList.length;i++) {
var u=userList[i];
console.log(u.username);
console.log(u.password);
if (u.username==username && u.password==password){
status=true;
localStorage.setItem("currentUser",username);
currentUser=userList[i];
break;
}
}
if (status==true){
location.href="EditProfile.html";
}
}
本地存储中显示的只是关键的currentUser,但它的值是空的。我想在用户登录后显示当前存储中显示的currentUser的数据信息,以便我可以在编辑配置文件和配置文件页面中显示用户详细信息。
我期望在本地存储中看到的内容:
key value
currentUser {"username":"staff3","name":"stella ","password":"123","rpassword":"123,"email":"g@gmail.com"}
本地存储中显示的内容:
key value
currentUser //nth showed up here
答案 0 :(得分:1)
问题在于:
LocalStorage仅存储字符串。如果要存储对象,可以使用
JSON.stringify(object)
所以在你的情况下,你需要:
localStorage.setItem("currentUser",JSON.stringify(userList[i]));
希望有所帮助!
答案 1 :(得分:0)
只需这样做
function checkUser(ev) {
ev.preventDefault();
var status=false;
var username = document.getElementById("username").value;
var password = document.getElementById("password").value;
for(var i=0;i<userList.length;i++) {
var u=userList[i];
console.log(u.username);
console.log(u.password);
if (u.username==username && u.password==password){
console.log('Logged In');//check whether this console appears or not
localStorage.setItem("currentUser",userList[i]);//store whole data of logged user
currentUser=userList[i];
status=true;
break;
}
}
if (status==true){
location.href="EditProfile.html";
}
}