2010-03-23 79 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();}); 
     } 
    } 
相关问题