2013-02-27 28 views
0

我有一个非常奇怪的问题,我的ajax登录。下面我提供了登录代码。 奇怪的是:Ajax php登录只能使用alert();

如果我删除警报(“???”);我没有得到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"; 
} 
+0

你是什么意思“我没有得到checklogin.php的回应”? Firebug说什么? – 2013-02-27 15:13:07

+0

Firebug显示没有响应,警报()有萤火虫显示响应:成功 @ F4r-20:确切地说,这是奇怪的事情......但仍然警报使evrything工作:/ – Chickenlal 2013-02-27 15:17:37

+0

我会添加你的设计有缺陷,因为它不安全。使用ajax检查凭据没有意义,然后立即重新指向另一个不测试凭据的页面。你可能有一个标准的形式,检查是在'website.php'的负载上完成的。这将是安全的。 – Stevo 2013-02-27 15:24:28

回答

0

取出return false;。没有理由需要这样做。警报正在抑制它的影响。

+0

我认为返回false可能会阻止被点击的链接的默认操作。 – ktamlyn 2013-02-27 15:19:49

+0

然后改用JQuery方法'preventDefault'。 http://api.jquery.com/event.preventDefault/ – marteljn 2013-02-27 15:21:06

+0

我已经删除了返回false;但问题依然存在。 – Chickenlal 2013-02-27 15:23:42

0

我可以告诉你警报的作用:它在函数返回false之前添加一个暂停。只要你需要点击OK,这个暂停就足够了,这对AJAX请求的处理就足够了(记住这是异步发生的)。

PHP的回复肯定是应该的。该响应只是不能正确评估了。

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

0

该警报阻止页面在其存在时进一步操作。这告诉我有一个问题是由“返回false”造成的。或者在呼叫完成后页面上的其他内容与ajax呼叫冲突。警报的存在允许ajax呼叫在其中断之前完成。我建议你隔离这个功能,并把它放在测试页面上,以确定这个代码是否有问题。我怀疑它一旦孤立就会起作用。

+0

我发现了一些新的东西,如果在萤火虫我点击POST没有得到回应,我选择“再次发送”它得到一个正确的回应... 所以这就是alert()触发可能,触发刷新页面。但为什么我第一次没有得到正确的成功回应呢? – Chickenlal 2013-02-27 15:25:08

+0

我在代码中看不到问题。你是否在另一个页面上隔离了功能并对其进行了测试? – ktamlyn 2013-02-27 15:59:51