2013-02-27 56 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