我正在尝试使用javascript模拟会话。大多数情况下,将用户凭据保存到LocalStorage中,然后与数组进行比较。
我在var oStoredCredentials = JSON.parse(localStorage.savedCredentials);
行上收到意外的输入结果,我找不到答案。
这是整个代码块:
$(document).on("click", ".submitBtnLog", function(){
var sUsername = $("#LoginName").val();
var sPassword = $("#LoginPassword").val();
for(var i=0; i< aEmployees.length; i++){
if(sUsername == aEmployees[i].username && sPassword == aEmployees[i].password){
login = true;
var sUsername = aEmployees[i].username;
var sPassword = aEmployees[i].password;
var oCredentials = {"savedUsername":sUsername,"savedPassword":sPassword};
var sCredentials = JSON.stringify(oCredentials);
localStorage.savedCredentials = sCredentials;
}
}
});
/*CHECK IF USER HAS ALREADY STARTED A "SESSION"*******************************************************************************/
if (localStorage.getItem("savedCredentials") === null) {
localStorage.savedCredentials = [];
}else{
var oStoredCredentials = JSON.parse(localStorage.savedCredentials);
//console.dir(oStoredCredentials.savedUsername)
for(var i=0; i< aEmployees.length; i++){
if(oStoredCredentials.savedUsername==aEmployees[i].username && oStoredCredentials.savedPassword==aEmployees[i].password){
login = true;
}
if(login === true){
var BoxHtml="Welcome "+aEmployees[i].name +" "+aEmployees[i].surname;
$("#Navigation").css({"display":"block"});
$("#LoginContainer").html(BoxHtml);
}else{
console.log(error);
};
};
};
答案 0 :(得分:0)
我设法重现了你的问题。由于localStorage.savedCredentials
行,它接缝localStorage.savedCredentials = [];
存储空数组而不存储字符串化对象。
您应该仔细检查您的代码并确保localStorage.savedCredentials始终是您所期望的。
答案 1 :(得分:0)
当localStorage为null时,您正在存储[]。因此,当else部分开始执行时,需要[]作为要解析的值,并且它在此中发现困难。当localStorage为null时,更改存储[]的逻辑。
答案 2 :(得分:0)
我创建了一些如何使用localStorage
的简单代码。
这是我的 HTML 代码:
<input id="LoginName" />
<input id="LoginPassword" />
<input id="submitBtnLog" type='button' value="Submit" />
<input id='btnGetLocalStorage' type='button' value='Get Local Storage' />
这是我的 Javascript 代码:
var Credentials = {
sUsername: '',
sPassword: ''
}
$('#submitBtnLog').click(function(){
Credentials.sUsername = $("#LoginName").val();
Credentials.sPassword = $("#LoginPassword").val();
localStorage.setItem('savedCredentials', JSON.stringify(Credentials));
});
$('#btnGetLocalStorage').click(function(){
if(localStorage.getItem('savedCredentials') != null){
var oStoredCredentials = JSON.parse(localStorage.getItem('savedCredentials'));
alert('Username = ' + oStoredCredentials.sUsername + ' Password = ' + oStoredCredentials.sPassword);
localStorage.removeItem('savedCredentials')
}
});
如果您需要有关如何使用localstorage的其他信息,请与我们联系。