2017-03-15 88 views
0

我的功能有问题。我想通过JSON数据进行登录表单验证。我的代码工作正常,但只有当我刷新后正确的数据。例如,当我输入不正确的登录名/密码时收到错误,但之后当我输入正确的登录名/密码时,什么也没有发生。我的功能只能使用一次

如果您能提供帮助,我将不胜感激。这里是我的js代码:

//JSON validation 
function validation(username, password){ 
    var alert = document.getElementById("invalid-data"); 
    data = JSON.parse(data); 

    for (var i=0; i < data.length; i++) { 
     if (username == data[i].login && password == data[i].password) { 
      window.open("panel.html", "_self"); 
     } else { 
      alert.style.display = "block"; 
     } 
    } 
} 

//Form validation 
function getLoginInfo() { 
    var username = document.getElementById("username").value; 
    var password = document.getElementById("password").value; 

    validation(username, password); 
} 

var button = document.getElementById("login-button"); 
button.addEventListener("click", getLoginInfo); 
+0

你在你的错误控制台中看到什么错误? – Psi

+0

数据定义在哪里? 'data = JSON.parse(data);' –

+0

我的数据是在外部文件data/users.json中定义的。 –

回答

0

我希望你的问题是data = JSON.parse(data);因为第一次的时候你解析数据,你把它放到data再次,它在你的下一个data JSON解析引起的问题。所以我想,如果你把你的问题将得到解决您解析data成不同的变量如下代码波纹管:

//JSON validation 
function validation(username, password){ 
var alert = document.getElementById("invalid-data"); 
var parsed_data = JSON.parse(data); 

for (var i=0; i < parsed_data.length; i++) { 
    if (username == parsed_data[i].login && password == parsed_data[i].password) { 
     window.open("panel.html", "_self"); 
    } else { 
     alert.style.display = "block"; 
    } 
} 
} 
//Form validation 
function getLoginInfo() { 
var username = document.getElementById("username").value; 
var password = document.getElementById("password").value; 

validation(username, password); 
} 

var button = document.getElementById("login-button"); 
button.addEventListener("click", getLoginInfo); 
+0

是的,你说得对。这是问题,感谢您的帮助! –

0

所以,这个函数的问题是,

data = JSON.parse(data); 

是一个函数内。我使它成为全球性的,一切正常。