【发布时间】:2018-04-19 09:31:28
【问题描述】:
所以我有一个登录表单,我想检查输入的名称和密码是否已经存在于 JSON 对象中,这两种情况都会提示不同的消息,但问题是它做得不对,这里是代码为了更清楚:
function registerInfo(){
var name = document.forms[0].username.value;
var pw = document.forms[0].pw.value
var xhttp = new XMLHttpRequest();
xhttp.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200) {
var response = JSON.parse(xhttp.responseText);
console.log(response);
if (name === "" || pw === "") {
alert ('please complete all the forms')
}
for (var i = 0; i < response.loginfo.length; i++){
if ( name === response.loginfo[i].username && pw ===
response.loginfo[i].password) {
alert('Welcome back ' + name);
break;
} // if statement curly braces
} // loop curcly braces
for (var i = 0; i < response.loginfo.length; i++){
if ( name != response.loginfo[i].username && pw != response.loginfo[i].pw){
alert('Welcome here new ');
break;
} // if statement curcly braces
} // for
} // ready state if statement curly braces
} // function curly braces
xhttp.open("GET", "login.json", true);
xhttp.send();
return false;
}
这是用于快速测试的 JSON 对象
{
"loginfo" : [
{
"username" : "moh",
"password" : "lol"
},
{
"username" : "zaki",
"password" : "123"
}
]
}
问题是当用户输入 JSON 对象 ID 中存在的用户名和密码时,会提示“欢迎回来!” ,还有我不想的“欢迎来到新”,因为最新的警报是针对新用户的,他们的凭据在 JSON 对象中不存在。
【问题讨论】:
-
你会在哪里使用这个?为什么不在服务器上执行此操作?
-
最简单的修复 - 在第一个循环中使用
break,而不是return。 -
我实际上正在构建一个小测验应用程序来应用我学到的关于 js 的东西,所以我在 localhost 上运行它并玩弄基本的东西!
-
@Luca,我相信他们正在在服务器上执行此操作,这就是 XMLHttpRequest 对象的意义所在。
-
@Bjonnfesk 这是一个本地主机!
标签: javascript arrays json object