Javascript 无法使用html5、AJAX和PHP登录
我正在尝试使用html表单登录用户帐户,AJAX和PHP花了数小时搜索解决方案,但什么也找不到。我是AJAX和php新手,如果有人能帮助我,我会很高兴的!!它会将请求发送到服务器(WAMP),但不会返回响应Javascript 无法使用html5、AJAX和PHP登录,javascript,php,mysql,ajax,html,Javascript,Php,Mysql,Ajax,Html,我正在尝试使用html表单登录用户帐户,AJAX和PHP花了数小时搜索解决方案,但什么也找不到。我是AJAX和php新手,如果有人能帮助我,我会很高兴的!!它会将请求发送到服务器(WAMP),但不会返回响应 hthml5 form <div id="Text"> <form action="JavaScript:loginAccount()" id="loginForm"> <h1>Login into My Account</h1> Use
hthml5 form
<div id="Text">
<form action="JavaScript:loginAccount()" id="loginForm">
<h1>Login into My Account</h1>
Username:<input id="username" type = "text" value="" /><br><br>
Password:<input id="password" type = "text" value="" /><br><br>
<div class="buttons">
<input type="submit" id="" value="Login" />
<input type="button" id="" value="Cancel" onclick="returnMain()"/>
</div>
</form>
hthml5格式
登录我的帐户
用户名:
密码:
php文件的AJAX请求
var loginAccountRequest=new XMLHttpRequest();
函数loginAccount(){
var url=“login.php”;
var userName=document.getElementById(“用户名”).value;
var passWord=document.getElementById(“密码”).value;
loginAccountRequest.onreadystatechange=insertStock();
loginAccountRequest.open(“POST”,url,true);
loginAccountRequest.setRequestHeader(“内容类型”、“应用程序/x-www表单urlencoded”);
loginAccountRequest.send(“user=“+userName+”&pass=“+passWord”);
}
来自服务器的AJAX响应
函数insertStock(){
if(loginAccountRequest.readyState==4){
如果(loginAccountRequest.status==200){
var response=loginAccountRequest.responseText;
var thediv=document.getElementById(“文本”);
如果(响应==0){
thediv.innerHTML=“抱歉,请重试…”
}
如果(响应==1){
stockShort();
}
}
}
}
php文件
首先,在JavaScript中,您没有正确地为AJAX调用分配回调。使用:
loginAccountRequest.onreadystatechange = insertStock; //no parentheses
其次,您的PHP没有任何响应。将以下内容放在PHP代码的末尾:
echo $errorMessage;
第三,回调代码没有正确检查响应。不要检查0
或1
,而是执行以下操作:
if (response !== "logged on ")
thediv.innerHTML = "Sorry please try again..";
else
stockShort();
它没有回复吗?那么请求超时了?是的,那么我该如何修复它呢,已经被困了好几个小时了!!请求在达到PHP的执行时间限制之前超时是很不寻常的,但我想这可能取决于您的配置。我会在代码中添加日志语句,并尝试找出哪一行锁定了进程。如果让我猜的话,我会说是MySQL连接或查询,但这真的不应该发生。在完成您提到的操作后,仍然没有响应?尝试删除对readyState==4
和status==200
的检查,然后看看是否得到响应。当代码执行时,输出并记录尽可能多的变量,以查看它在哪里停止。它在响应函数insertStock()处停止。它是否被调用过?这就是你的意思吗?如果是这样的话,你需要尝试在你的PHP中记录变量,看看问题出在哪里?
if (response !== "logged on ")
thediv.innerHTML = "Sorry please try again..";
else
stockShort();