[英]Ajax php login only works with an alert();
我的ajax登录有一个很奇怪的问题。 下面我提供了登录代码。 奇怪的是:
如果我删除了警报(“ ???”); 获取正确的登录参数时,checklogin.php没有响应。
如果警报(“ ???”); 保留在该功能中,页面checklogin.php答复为“成功”,并且website.php已加载!
基本上,当没有alert()时,它不会输入ajax成功。
我已经看了几个小时了,我不知道警报触发了什么来使这项工作。
它仍然可以获取所有正确的参数,但是php不会在没有警报的情况下回复。 我曾尝试使用'beforeSend'在ajax中进行睡眠,但这也没有用。
提前致谢!
AJAX功能:
function checkSwipedCredentials(decryptedCredentials)
{
$.ajax({
type: 'POST',
url: 'checklogin.php',
data: decryptedCredentials,
success:function(response)
{
if(response == 'success')
{
document.location='website.php';
} else {
showSwipeForm(); //onfailure
}
}
});
alert("???");
return false;
}
PHP代码:
$sql = "SELECT * FROM users WHERE username='$username' AND password='$password'";
$result = mysql_query($sql);
$count = mysql_num_rows($result);
if($count == 1)
{
echo "success";
$_SESSION['username']=$username;
} else {
echo "failed";
}
删除return false;
。 没有理由您需要这样做。 警报正在抑制它的影响。
我可以告诉您警报的作用:它会在函数返回false之前添加一个暂停。 只要您需要单击“确定”,此暂停就足够了,这足以处理AJAX请求(请记住这是异步发生的)。
PHP最肯定地答复了它应有的情况。 仅不再正确评估响应。
现在剩下的问题是:如何调用此函数,以便返回值具有这些副作用?
警报阻止页面在页面出现时进一步采取行动。 这告诉我存在一个由“ return false”引起的问题; 或调用后页面上的其他内容与ajax调用冲突。 警报的存在允许ajax调用在中断之前完成。 我建议您隔离此功能并将其单独放在测试页上,以解决此代码是否有问题的情况。 我怀疑一旦隔离就会工作。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.