Php 使用ajax登录表单,提交时无需刷新
我使用本教程创建一个登录表单 它针对我们的ldap服务器进行身份验证 我遇到的问题是线路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',
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项目已经有一段时间了:)