Php 使用ajax登录表单,提交时无需刷新

Php 使用ajax登录表单,提交时无需刷新,php,jquery,html,ajax,Php,Jquery,Html,Ajax,我使用本教程创建一个登录表单 它针对我们的ldap服务器进行身份验证 我遇到的问题是线路 success: function(){ $('form#submit').hide(function(){$('div.success').fadeIn();}); 它运行成功,尽管我们甚至不知道用户名和密码绑定是否成功 如果发布的用户名和密码已成功绑定,是否有方法仅运行成功 编辑: 添加了ldap-login.php的php代码 <?php ini_set('display_errors',

我使用本教程创建一个登录表单

它针对我们的ldap服务器进行身份验证

我遇到的问题是线路

success: function(){
 $('form#submit').hide(function(){$('div.success').fadeIn();});
它运行成功,尽管我们甚至不知道用户名和密码绑定是否成功

如果发布的用户名和密码已成功绑定,是否有方法仅运行成功

编辑:

添加了ldap-login.php的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";
    }
}
?>

让ajax函数返回用户名和密码是否成功绑定。您的代码将如下所示:

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

如果您的响应返回一个简单的字符串“ok”或错误消息,您可以通过以下方式进行检查:

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

或者,发送/检查更复杂的JSON响应。

之所以运行succes,是因为succes意味着ajax调用成功。这并不意味着它根据您尚未实现的逻辑进行了验证,但正如其他答案中所述,它应该有效。但是现在您知道它调用的回调何时成功了。

您需要做的是通过success函数返回一个标志

success:
函数在您的案例中表示表单提交成功,而不一定表示身份验证成功。success函数可以接受一个字符串,该字符串指示服务器返回的任何内容

请参阅jQuery文档中的部分

你可以做:

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

如何通过php将字符串传递给数据变量?我知道如果绑定成功,我可以在条件中设置$data=“ok”,但不确定如何将其输入jquery函数。@Brad-无论响应文本是什么,它都会自动成为成功函数的第一个参数。如果您只是回显“ok”或错误消息,则此方法将起作用。你可以在这里看到成功方法的定义:添加了我用来绑定到ldap的php代码,我打印“ok”,如果这太文字化了,很抱歉-这行吗?@Brad-应该行-很抱歉,我现在没有php设置来测试…我的上一个php项目已经有一段时间了:)