我有一个登录页面,其中我编写了一个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');
}
?>
提前致谢
答案 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。