这是我的代码
$('#login').on('click',function(e){
e.preventDefault();
var username = document.getElementById('username').value;
var password = document.getElementById('password').value;
var ajax = new XMLHttpRequest();
var vars = 'username='+username+'&password='+password;
var url = "singInDrProcess.php";
ajax.open("POST", url, true);
ajax.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
ajax.send(vars);
ajax.onreadystatechange = function() {
if(ajax.readyState == 4 && ajax.status == 200) {
var return_data = ajax.responseText;
if(return_data!="success_login")
document.getElementById("result_signin").innerHTML = return_data;
}else{
window.location.replace("profile.php");
}
}
});
问题是,当用户访问此页面并尝试登录时,即使他从未输入任何用户名或密码,只需单击我的登录按钮,页面也会被重定向到profile.php 我的意思是,ELSE部分总是运行,或者字段上有数据或者所有字段都是空的 有什么问题?
答案 0 :(得分:2)
根据括号缩进代码:
if(ajax.readyState == 4 && ajax.status == 200) {
var return_data = ajax.responseText;
if(return_data!="success_login")
document.getElementById("result_signin").innerHTML = return_data;
}else{
window.location.replace("profile.php");
}
} // extraneous
这不是你想要的。
在{
之后添加if(return_data!="success_login")
或在}
之前移除else
将解决此问题:
if(ajax.readyState == 4 && ajax.status == 200) {
var return_data = ajax.responseText;
if (return_data!="success_login") {
document.getElementById("result_signin").innerHTML = return_data;
} else {
window.location.replace("profile.php");
}
}
答案 1 :(得分:1)
您在{
if(return_data!="success_login")
但应该是
if(ajax.readyState == 4 && ajax.status == 200) {
//--------------add opening curly brace here---^
答案 2 :(得分:1)
if(return_data!="success_login")
document.getElementById("result_signin").innerHTML = return_data;
}else{
window.location.replace("profile.php");
}
}
});
应改为
if(return_data!="success_login")
{document.getElementById("result_signin").innerHTML = return_data;
}else{
window.location.replace("profile.php");
}
}
});
你忘了{在if括号之后。
此外,您应该使用JSHint,因为它有助于解决错误等问题。