Javascript Ajax在visual studio for windows中不工作(混合)
我正在使用ajax登录用户,但该脚本不起作用。当我调用login函数执行任何操作时Javascript Ajax在visual studio for windows中不工作(混合),javascript,php,ajax,visual-studio-2013,blend,Javascript,Php,Ajax,Visual Studio 2013,Blend,我正在使用ajax登录用户,但该脚本不起作用。当我调用login函数执行任何操作时 function login() { var login = new XMLHttpRequest; var e = document.getElementById("email").value; var p = document.getElementById("password").value;
function login() {
var login = new XMLHttpRequest;
var e = document.getElementById("email").value;
var p = document.getElementById("password").value;
var vars = "email=" + e + "&password=" + p;
login.open("POST", "http://example.com/app/login.php", true);
login.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
login.onreadystatechange = function(){
if (login.readyState == 4 && login.status == "200") {
var response = login.responseText;
//document.getElementById("status").innerHTML = response;
}
document.getElementById("status").innerHTML = "Loggin in....";
login.send(vars);
if (response == "Sucess") {
window.location.replace("/logged.html");
}
else {
document.getElementById("status").innerHTML == "Login Failed";
}
}
}
login.php包含以下代码
require_once('../db_/connection.php');//Holds connection to database
$email = mysqli_real_escape_string($con, $_POST['email']);//Sanitizing email
$pass = md5($_POST['password']);//Hashing password
$sql = "SELECT id FROM users WHERE email='$email' AND password='$pass' LIMIT 1";
$query = mysqli_query($con, $sql);
$check = mysqli_num_rows($query);
if($check < 1){
echo "fail";
//mysqli_close($con);
exit();
}
else{
echo "Sucess";
//mysqli_close($con);
exit();
}
调用登录函数不会执行代码
第2行:新XMLHttpRequest之后缺少括号
第15行:if response==Sucess{…}拼写错误,在返回ajax请求之前执行,因为它是异步的
我在JSFIDLE为您制作了一个工作版本:
您可能会发现MDN引用的帮助信息:您是否尝试过调试它?结果如何?我使用get方法而不是post方法调试php,脚本运行良好。。问题在于ajax。。我发现我写的是login.status=200而不是login.status=200我修复了这个问题,但仍然不起作用我用firebug调试过。。但是控制台是空的。我所做的是在发送vars login.sendvars之后;我执行了一个名为execute的函数,并将条件像这样放入该函数中。login.sendvars;execute}}函数execute{if response==suces{window.location.replaceAuto.php;}否则{document.getElementByIdstatus.innerHTML=Login失败;}但它仍然不起作用。添加执行函数是个好主意。通过检查login.status,现在可以省去对login.responseText的检查。顺便说一句,如果response==suces是*拼写错误。我为您添加了完整的解决方案,我使用firebug进行了调试。。但是控制台是空的。Thanx您的脚本正在工作。。但我不知道为什么我的不工作,即使控制台是空的。。