0

我的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";
}
4

3 回答 3

0

删除return false;. 您没有理由需要这样做。警报正在抑制它的影响。

于 2013-02-27T15:18:20.713 回答
0

我可以告诉你警报的作用:它在函数返回 false 之前添加了一个暂停。只要您需要单击“确定”,此暂停时间就足以处理 AJAX 请求(请记住,这是异步发生的)。

PHP 的回复肯定与它应该的完全一样。只是响应不再被正确评估。

现在剩下的问题是:如何调用这个函数,使返回值具有这些副作用?

于 2013-02-27T15:18:28.020 回答
0

该警报正在阻止页面在其存在时进行进一步的操作。这告诉我存在由“return false”引起的问题;或者页面上的其他内容在调用后与 ajax 调用发生冲突。警报的存在允许 ajax 调用在其中断之前完成。我建议您隔离此功能并将其单独放在测试页面上,以确定此代码是否有问题。我怀疑它一旦被隔离就会起作用。

于 2013-02-27T15:19:04.390 回答