2010-08-01 112 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)); 
}; 
?> 

数据验证的一点还是不错的。