2012-05-24 61 views
0

我有這個jQuery來驗證用戶進入網站,我怎樣才能使login.php返回的成功/錯誤的兩個動作?如果login.php中的登錄信息不成功,是否可以刷新成功頁面(例如)併發布錯誤消息。我希望我的問題很清楚。這是代碼。現在它只是粘貼從login.php輸出的數據,我不知道如何分離成功/錯誤返回的服務器端。

$("#form-login").submit(function(event) { 
    event.preventDefault(); 
    var $form = $(this), 
     log = $form.find('input[name="log"]').val(), 
     pwd = $form.find('input[name="pwd"]').val(), 
     rememberme = $form.find('input[name="rememberme"]').val(); 
    $.post('/ajax/login.php', { log: log, pwd: pwd, rememberme: rememberme }, 
     function(data) { 
      $(".form-login-status").html(data); 
     } 
    ); 
}); 

回答

2

在你的服務器端腳本,返回狀態以及郵件,就像這樣:

$result = array(); 

if (login_is_successful()) { 
    $result['status'] = true; 
    $result['message'] = "Logged in"; 
} else { 
    $result['status'] = false; 
    $result['message'] = 'Incorrect password'; 
} 

echo json_encode($result); 

這使您可以靈活地從服務器端發送任何響應消息,而無需處理它特別是在你的客戶端代碼。明天,如果你想單獨發送消息'不正確的用戶名'和'不正確的密碼',只要$result['status']仍然是false,你可以在不改變你的JS的情況下這樣做。

然後在你$.post的成功處理程序,做到這一點:

success : function(resp) { 
    if (resp.status) { 
     //user logged in 
     //refresh page 
     window.location.reload(); 
    } else { 
     //failed authentication 
     alert(resp.message); 
    } 
} 

確保您設置dataType: 'json'

重要提示:

如果驗證失敗,在erorr處理您的$.post不會被調用,因此您必須檢查您的成功處理程序中失敗的身份驗證。

錯誤處理程序僅在發出POST請求時出錯。

+0

工程就像一個魅力! –

0

當然,這是在documentation

$.post("example.php", {}, function() { 
     alert("success"); 
    }) 
    .success(function() { alert("second success"); }) 
    .error(function() { alert("error"); }) 
    .complete(function() { alert("complete"); }); 
0

在你的「成功」的處理程序,你需要處理的請求的URI,指出憑據是否驗證返回的標誌用戶與否。你會想要根據這個邏輯來分支你的邏輯。

相關問題