【问题标题】:My function works just once我的功能只工作一次
【发布时间】:2017-03-15 23:47:15
【问题描述】:

我的功能有问题。我想通过 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);

【问题讨论】:

  • 您的错误控制台出现什么错误?
  • data 在哪里定义? data = JSON.parse(data);
  • 我的数据是在外部文件-data/users.json中定义的。
  • 我收到错误:SyntaxError: Unexpected token o in JSON at JSON.parse () 在 HTMLButtonElement.getLoginInfo (main.js:20) 验证 (main.js:4) )
  • 一旦你完成data = JSON.parse(data); 一次,它就永远不会再工作了。

标签: javascript html css json validation


【解决方案1】:

我希望您的问题是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);

【讨论】:

  • 是的,你是对的。就是这个问题,谢谢帮助!
【解决方案2】:

所以,这个函数的问题是

data = JSON.parse(data);

在函数内部。我把它变成了全球性的,一切都很好。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-11-10
    • 1970-01-01
    • 1970-01-01
    • 2021-11-17
    • 2020-05-10
    • 1970-01-01
    • 2018-01-28
    相关资源
    最近更新 更多