JSON响应显示为true↵,长度错误

时间:2017-07-06 19:19:27

标签: php jquery json ajax

我是AJAX的新手,使用AJAX和PHP创建一个简单的登录系统。我的JSON响应显示为RedisSerializer长度为6.问题在哪里,我该如何解决?

AJAX

select * order by xxx

登录-response.php

true↵

1 个答案:

答案 0 :(得分:-1)

根据我的评论:json_encode(true)不会返回有效的JSON。相反,您将需要编码各种类型的数组。有很多方法可以做到这一点,但一种方法是简单地编码一个['success' => true]的数组,换句话说:

session_start();
$user_email = $_POST['user_email'];
$user_password = $_POST['password'];

if ($user_email == 'admin' && $user_password == '123') {
    $_SESSION['user_session'] = $user_email;
    echo json_encode(array('success' => true));
}
else {
    echo json_encode(array('success' => false, 'message' => 'email or password does not exist.'));
}

请注意,您还应编码失败消息,因为您的jQuery希望以JSON格式接收内容。

在jQuery逻辑中收到此响应后,您只需检查响应是否具有值为true的成功对象,即:

$.ajax({
    type: 'POST',
    url: 'login-response.php',
    data: data,
    dataType: 'json'
})
.done(function(response) {
    if (response.success) {
        $("#btn-login").html('<img src="btn-ajax-loader.gif" /> &nbsp; Signing In ...');
        setTimeout(' window.location.href = "demo.php"; ', 4000);
    } else {
        $("#error").fadeIn(1000, function() {
            // Your error message is accessible via `response.message`
            $("#error").html('<div class="alert alert-danger"> <span class="glyphicon glyphicon-info-sign"></span> &nbsp; ' + response.message + ' !</div>');
            $("#btn-login").html('<span class="glyphicon glyphicon-log-in"></span> &nbsp; Sign In');
        });
    }
});

一些注意事项:

  • 可以通过response.success访问请求状态。当然,根据个人喜好,您可以选择退回退出状态,例如使用退出代码(0表示正常,0以外的任何内容均表示错误)
  • 您的失败回复消息可通过response.message
  • 访问

p / s:请记住,jqXHR.success方法已被弃用!请改用jqXHR.done();)