我有这个jQuery来验证用户进入网站,我怎样才能为login.php返回的成功/错误做两个动作?是否可以在成功时刷新页面(例如)并在login.php中登录信息不成功时发布错误消息。我希望我的问题很清楚。这是代码。现在它只是粘贴login.php的数据输出,我不知道如何分离返回服务器端的成功/错误。
$("#form-login").submit(function(event) {
event.preventDefault();
var $form = $( this ),
log = $form.find( 'input[name="log"]' ).val(),
pwd = $form.find( 'input[name="pwd"]' ).val(),
rememberme = $form.find( 'input[name="rememberme"]' ).val();
$.post( '/ajax/login.php', { log: log, pwd: pwd, rememberme: rememberme },
function(data) {
$(".form-login-status").html(data);
}
);
});
答案 0 :(得分:2)
在服务器端脚本中,返回状态和消息,如下所示:
$result = array();
if (login_is_successful()) {
$result['status'] = true;
$result['message'] = "Logged in";
} else {
$result['status'] = false;
$result['message'] = 'Incorrect password';
}
echo json_encode($result);
这使您可以灵活地从服务器端发送任何响应消息,而无需在客户端代码中专门处理它。明天,如果您想单独发送“不正确的用户名”和“不正确的密码”消息,只要$result['status']
仍为false
,您就可以在不对JS进行任何更改的情况下这样做。
然后在$.post
的成功处理程序中,执行以下操作:
success : function(resp) {
if (resp.status) {
//user logged in
//refresh page
window.location.reload();
} else {
//failed authentication
alert(resp.message);
}
}
确保设置dataType: 'json'
重要提示:
如果身份验证失败,则不会调用$.post
中的erorr处理程序,因此您必须检查成功处理程序中的身份验证失败。
只有在发出POST请求时出现错误时才会调用错误处理程序。
答案 1 :(得分:0)
当然,它在documentation:
$.post("example.php", {}, function() {
alert("success");
})
.success(function() { alert("second success"); })
.error(function() { alert("error"); })
.complete(function() { alert("complete"); });
答案 2 :(得分:0)
在“成功”处理程序中,您需要处理请求的URI返回的标志,该标志指出凭据是否对用户进行了身份验证。您将希望根据该逻辑分支您的逻辑。