因此,当单击登录按钮时,如果登录成功与否,我使用JQuery POST方法从login.php获取数据。如果它不是(没有找到用户),那么它会正确显示该消息。
但是当我想重定向用户(用户存在)时,它会将整个网页打印到那个DIV中。
按下JQuery按钮后:
$(function(){
$("#login-form").submit(function() {
event.preventDefault();
var name = $('#inputName').val();
var password = $('#inputPassword').val();
$.post("login.php",
{
name: name,
password: password
},
function(data)
{
$("#resultDiv").hide().html(data).fadeIn(1000).effect( "shake", {direction:"up",times:2, distance:10}, 750 );
});
});
});
如果登录失败,则会显示。但是,当我想重定向时,doesen工作:
if(!$row) {
echo '<div class="alert alert-danger" style="margin-top:25px; margin-bottom: 0px; text-align:center;">Invalid <strong>username</strong> or <strong>password</strong>.</div>';
} else {
$line = mysqli_fetch_assoc($query);
$_SESSION['IP'] = $line["IP"];
$_SESSION['ID'] = $line["ID"];
$_SESSION['username'] = $username;
header("location:choose.php");
}
因此,当用户登录时,我该如何重定向他?不想展示任何东西。
答案 0 :(得分:1)
您的登录脚本不会以您拥有的方式重定向整个页面,它只是重定向AJAX请求,因此整个页面最终都会出现在resultDiv中。
您的成功函数应该在将数据应用于resultDiv html()之前查看返回的数据。
我发现登录响应更容易成为JSON数据集,这使得抓取更容易:
if(data.loggedIn==true) {
window.location = data.location;
} else {}
您还可以将resultDiv保留为错误,它只是:
$("#resultDiv").hide().html(data.errorMsg)...
对于php方面:
if(!$row) {
echo '{loggedIn:false,errorMsg:"<div class=\"alert alert-danger\" style=\"margin-top:25px; margin-bottom: 0px; text-align:center;\">Invalid <strong>username</strong> or <strong>password</strong>.</div>"}';
} else {
$line = mysqli_fetch_assoc($query);
$_SESSION['IP'] = $line["IP"];
$_SESSION['ID'] = $line["ID"];
$_SESSION['username'] = $username;
echo '{loggedIn:true,location:"choose.php"}';
}
我希望这对你有用。