2010-08-01 107 views
0

我想調出HTTP身份驗證框來處理我的登錄。但是,我想通過Ajax與我的數據庫進行通信。但我不知道如何連接HTTP身份驗證框與AJAX。如何與jquery進行HTTP身份驗證來驗證登錄系統?

任何想法,如何做到這一點?還請包括例如

+2

這是某種形式的開玩笑還是你對這個問題很認真? – 2010-08-01 09:24:50

+0

不,我想與jquery溝通HTTP登錄框 – Starx 2010-08-01 09:27:18

+1

哦,對,因爲我認爲你是在開玩笑,並不是說這個改變什麼,但你總是希望得到答案。有了這個級別的細節你的問題我不會:-) – 2010-08-01 09:28:36

回答

1

(令我驚訝的)的jQuery內置了support用於提供HTTP認證證書:

$.ajax({ 
    url: "http://example.org/", 
    username: "NAMENAMENAMENAMENAME", 
    password: "PWPWPWPWPWPWPWPWPWPW", 
    ... 
}) 

或者你可以重寫XMLHttpRequest對象就像這個例子:http://dothow.blogspot.com/2009/05/http-basic-authentication-with-jquery.html

+0

它沒有工作 – Starx 2010-08-04 16:47:22

+0

@ asdf2:jQuery 1.4.2用我的用戶名和密碼正常工作: – mario 2010-08-04 17:38:41

1

基本HTML:

<form id="login-form" action="/login.php" method="post"> 
    <label for="username">Username: </label> 
    <input type="text" name="username" id="username"/><br /> 

    <label for="Password">Password: </label> 
    <input type="text" name="password" id="password"/><br /> 

    <input type="submit" value="Login"/> 
</form>​ 

基本的jQuery:

$(document).ready(function() { 
    $('#login-form').bind('submit', function (e) { 
     var self = $(this); 

     // See ajax: http://api.jquery.com/jQuery.post 
     // See serialize: http://api.jquery.com/serialize() 
     jQuery.post(self.attr('action'), self.serialize(), function() { 
      if (response.success) { 
       // wooo, logged in 
      } else { 
       alert("Invalid username or password. Please try again"); 
      } 
     }, 'json'); 

     e.preventDefault(); //prevent the form being posted 
    }); 
});​ 

基本PHP:

<?php 
if ($_POST['username'] == 'Admin' && $_POST['password'] == 'letmein') { 
    echo json_encode(array('success' => true)); 
} else { 
    echo json_encode(array('success' => false)); 
}; 
?> 

數據驗證的一點還是不錯的。