登录表单,而无需刷新
问题描述:
提交我使用本教程创建一个登录表单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";
}
}
?>
答
如果你的反应回来有一个简单的字符串“OK”或错误信息,您可以检查它这样说:
success: function(data){
if(data === "ok") {
$('form#submit').hide(function(){$('div.success').fadeIn();
} else {
alert(data); // If not "ok", show error message
}
});
另外,发送/查询一个更复杂的JSON响应。
答
的
加入PHP代码让你的AJAX函数返回的用户名和密码是否成功绑定。然后,您的代码是这样:
success: function(data){
if(data.success){
$('form#submit').hide(function(){$('div.success').fadeIn();});
}
}
答
它运行成功的原因是因为成功意味着ajax调用成功了。这并不意味着它会根据你尚未实现的逻辑进行验证,但正如其他答案中所描述的那样应该可行。但是现在你知道它所称的成功回调时间。
答
你需要做的是通过成功函数返回一个标志。
您的案例中的success:
函数表示成功提交表单,而不一定是认证成功。成功函数可以接受指示服务器返回的任何内容的字符串。
请参阅jQuery文档中的success(data, textStatus, XMLHttpRequest)部分。
你可以这样做:
success: function(status){
if(status === "loggedIn") {
$('form#submit').hide(function(){$('div.success').fadeIn();});
}
}
我怎么会传递一个字符串通通过PHP数据变量?我知道如果绑定成功,我可以在条件内设置$ data =“ok”,但不确定如何将它馈送到该jquery函数中。 – Brad 2010-03-23 19:42:58
@Brad - 无论响应文本是什么,这都是自动成功功能的第一个参数。如果您只是回显“ok”或错误消息,则此方法将起作用。你可以在这里看到成功的方法定义:http://api.jquery.com/jQuery.ajax/ – 2010-03-23 19:47:54
添加了我用来绑定到ldap的php代码,我打印出“ok”,对不起,如果这太过于字面意思 - 会那工作? – Brad 2010-03-23 20:00:40