使用$ .post对用户进行身份验证以返回自定义错误/成功消息

时间:2012-05-24 23:08:58

标签: javascript jquery

我有这个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);
        }
    );
});

3 个答案:

答案 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返回的标志,该标志指出凭据是否对用户进行了身份验证。您将希望根据该逻辑分支您的逻辑。