2010-03-23 107 views
2

提交我使用本教程創建一個登錄表單http://www.ryancoughlin.com/2008/11/04/use-jquery-to-submit-form/登錄表單,而無需刷新

它會驗證對W /我們的LDAP服務器。

我有一個問題,什麼是它運行成功,即使我們甚至不知道用戶名和密碼成功綁定行

success: function(){ 
$('form#submit').hide(function(){$('div.success').fadeIn();}); 

如果發佈的用戶名和密碼成功綁定,有沒有辦法只運行成功?

編輯:LDAP-login.php中

<?php 

ini_set('display_errors',1); 
error_reporting(E_ALL); 
require_once('/web/ee_web/include/adLDAP.php'); 
$adldap = new adLDAP(); 
if (isset($_POST['username']) && isset($_POST['password'])) { 
    $username = $_POST['username']; 
    $password = $_POST['password']; // associated password 

    // connect to ldap server 
    $authUser = $adldap->authenticate($username, $password); 
    if ($authUser === true) { 
     $_SESSION['user_session'] = $username; 
     if(isset($_SESSION['user_session'])) { 
      print "ok"; 
     } 
    } 
    else { 
     print "User authentication unsuccessful"; 
    } 
} 
?> 

回答

3

如果你的反應回來有一個簡單的字符串「OK」或錯誤信息,您可以檢查它這樣說:

success: function(data){ 
    if(data === "ok") { 
    $('form#submit').hide(function(){$('div.success').fadeIn(); 
    } else { 
    alert(data); // If not "ok", show error message 
    } 
}); 

另外,發送/查詢一個更復雜的JSON響應。

+0

我怎麼會傳遞一個字符串通通過PHP數據變量?我知道如果綁定成功,我可以在條件內設置$ data =「ok」,但不確定如何將它饋送到該jquery函數中。 – Brad 2010-03-23 19:42:58

+0

@Brad - 無論響應文本是什麼,這都是自動成功功能的第一個參數。如果您只是回顯「ok」或錯誤消息,則此方法將起作用。你可以在這裏看到成功的方法定義:http://api.jquery.com/jQuery.ajax/ – 2010-03-23 19:47:54

+0

添加了我用來綁定到ldap的php代碼,我打印出「ok」,對不起,如果這太過於字面意思 - 會那工作? – Brad 2010-03-23 20:00:40

0

加入PHP代碼讓你的AJAX函數返回的用戶名和密碼是否成功綁定。然後,您的代碼是這樣:

success: function(data){ 
    if(data.success){ 
    $('form#submit').hide(function(){$('div.success').fadeIn();}); 
    } 
} 
1

它運行成功的原因是因爲成功意味着ajax調用成功了。這並不意味着它會根據你尚未實現的邏輯進行驗證,但正如其他答案中所描述的那樣應該可行。但是現在你知道它所稱的成功回調時間。

0

你需要做的是通過成功函數返回一個標誌。

您的案例中的success:函數表示成功提交表單,而不一定是認證成功。成功函數可以接受指示服務器返回的任何內容的字符串。

請參閱jQuery文檔中的success(data, textStatus, XMLHttpRequest)部分。

你可以這樣做:

success: function(status){ 
     if(status === "loggedIn") { 
     $('form#submit').hide(function(){$('div.success').fadeIn();}); 
     } 
    } 
相關問題