在页面刷新

时间:2015-06-24 21:15:34

标签: php jquery ajax

我有一个登录页面,其中我编写了一个jQuery代码来发出一个ajax post请求,后者又调用另一个php脚本来验证用户凭据。如果凭据正确,用户将被重定向到php脚本本身的主页。但是当用户提供他的凭据并点击登录时,他不会被重定向,直到重新加载页面。这是我面临的一个奇怪问题。请帮我解决。

这是我的JQuery代码:

<script>
            $( document ).ready(function() {
                $('#loginButton').click(function ()
                {

                    var username = $("#inputUsername").val();             
                    var password = $("#inputPassword").val();
                    var dataString = 'inputUsername=' + username + '&inputPassword=' + password;
                    if ($.trim(username).length > 0 && $.trim(password).length > 0)
                    {
                        $.ajax({
                            type: "POST",
                            url: "ajaxLogin.php",
                            data: dataString,
                            cache: false,
                            beforeSend: function () {
                                $("#loginButton").val('Connecting...');
                            },

                        });
                    }
                    return false;
                });

            });
</script>

这是html登录表单

<form>
                    <div class="form-group center-block">
                        <input type="text" class="form-control" id="inputUsername" placeholder="Username">
                    </div>
                    <div class="form-group">
                        <input type="password" class="form-control" id="inputPassword" placeholder="Password">
                    </div>
                    <button type="submit" class="btn btn-login center-block" id="loginButton">Login</button>
                    <div id="error"></div>
               </form>

PHP代码:

<?php
include("db.php");
session_start();
$username=mysqli_real_escape_string($db,$_POST['inputUsername']); 
$password=mysqli_real_escape_string($db,$_POST['inputPassword']); 
$result=mysqli_query($db,"SELECT user_id FROM user_info WHERE username='".$username."' and password='".$password."'");
$count=mysqli_num_rows($result);
$row=mysqli_fetch_array($result,MYSQLI_ASSOC);
// If result matched $username and $password, table row  must be 1 row
if($count==1)
{
$_SESSION['login_user']=$row['user_id']; //Storing user session value.
header('Location: home.html');
} 
?>

提前致谢

2 个答案:

答案 0 :(得分:1)

您的页面是否在$ .ajax成功处理程序中重定向,而不是在php端。\

答案 1 :(得分:0)

PHP 上的 Ajax 请求中终止您在php部分中使用echo时,您将在exit()之后使用echo方法{1}}取消继续页面。

我的意见是,您使用echo命令和exit()并在Ajax中使用成功方法验证echo如果验证是真的使用JavaScript重定向。

<script>
        $( document ).ready(function() {
            $('#loginButton').click(function ()
            {

                var username = $("#inputUsername").val();             
                var password = $("#inputPassword").val();
                var dataString = 'inputUsername=' + username + '&inputPassword=' + password;
                if ($.trim(username).length > 0 && $.trim(password).length > 0)
                {
                    $.ajax({
                        type: "POST",
                        url: "ajaxLogin.php",
                        data: dataString,
                        cache: false,
                        success: function (data)
                            {
                                if (data == 1) {
                                    window.location = "home.html";
                            }
                        beforeSend: function () {
                            $("#loginButton").val('Connecting...');
                        },

                    });
                } else {
                    return false;
                }
            });

        });

如果您的验证为TRUE,那么您将在php中使用此代码:

echo 1;
exit();

echo 1,在Success方法中将数据返回1。