繁体   English   中英

输入意外结束(JavaScript和JSON)

[英]Unexpected end of input (javascript and JSON)

我正在尝试使用javascript模拟会话。 通常,将用户凭据保存到LocalStorage中,然后与阵列进行比较。 我在var oStoredCredentials = JSON.parse(localStorage.savedCredentials);上收到意外的输入结束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);
            };
     };
};

我设法重现了您的问题。 由于localStorage.savedCredentials = []; ,因此它缝接localStorage.savedCredentials存储空数组而不存储字符串化的对象localStorage.savedCredentials = []; 线。

您应该仔细检查您的代码,并确保localStorage.savedCredentials始终是您期望的样子。

当localStorage为null时,您正在存储[]。 因此,当其他部分开始执行时,它以[]作为要解析的值,并为此感到困难。 更改为null时在localStorage中存储[]的逻辑。

我创建了一些有关如何使用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')
    }
});

如果您需要有关如何使用本地存储的其他信息,请告诉我。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM