0

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

3 回答 3

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);

这使您可以灵活地从服务器端发送任何响应消息,而无需在客户端代码中专门处理它。明天,如果您想分别发送消息“用户名错误”和“密码错误”,您可以在不更改您的JS的情况下这样做,只要$result['status']仍然存在false

然后在您的成功处理程序中$.post,执行以下操作:

success : function(resp) {
    if (resp.status) {
        //user logged in
        //refresh page
        window.location.reload();
    } else {
        //failed authentication
        alert(resp.message);
    }
}

确保你设置dataType: 'json'

重要的提示:

如果身份验证失败,$.post将不会调用您的错误处理程序,因此您必须检查成功处理程序中的身份验证失败。

只有在发出 POST 请求时出现错误时才会调用错误处理程序。

于 2012-05-24T23:14:25.470 回答
0

当然,它在文档中:

$.post("example.php", {},  function() {
      alert("success");
    })
    .success(function() { alert("second success"); })
    .error(function() { alert("error"); })
    .complete(function() { alert("complete"); });
于 2012-05-24T23:11:18.840 回答
0

在您的“成功”处理程序中,您需要处理请求的 URI 返回的标志,该标志说明凭据是否对用户进行了身份验证。您将希望基于该逻辑来分支您的逻辑。

于 2012-05-24T23:14:00.230 回答