2017-03-15 142 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); 

是一個函數內。我使它成爲全球性的,一切正常。