Javascript 从PHP发出JQuery AJAX请求后重定向
因此,当单击login按钮时,如果登录成功与否,我将使用JQuery POST方法从login.php获取数据。如果未找到(未找到用户),则会正确显示消息 但当我想重定向用户(用户存在)时,它会将整个网页打印到该DIV中 按下JQuery after按钮后:Javascript 从PHP发出JQuery AJAX请求后重定向,javascript,php,jquery,ajax,Javascript,Php,Jquery,Ajax,因此,当单击login按钮时,如果登录成功与否,我将使用JQuery POST方法从login.php获取数据。如果未找到(未找到用户),则会正确显示消息 但当我想重定向用户(用户存在)时,它会将整个网页打印到该DIV中 按下JQuery after按钮后: $(function(){ $("#login-form").submit(function() { event.preventDefault(); var name = $('#inputName').val();
$(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 );
});
});
});
如果登录不成功,则显示。但当我想重定向时,它不起作用:
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");
}
if(!$row){
echo“无效的用户名或密码”;
}否则{
$line=mysqli\u fetch\u assoc($query);
$\会话['IP']=$行[“IP”];
$\会话['ID']=$行[“ID”];
$\会话['username']=$username;
标题(“位置:choose.php”);
}
那么,当用户登录时,我如何重定向他?不想显示任何内容。您的登录脚本不会按照您的方式重定向整个页面,它只是重定向AJAX请求,因此整个页面最终都会显示在resultDiv中是有意义的 success函数在将数据应用于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"}';
}
if(!$row){
echo'{loggedIn:false,errorMsg:“无效的用户名或密码”;
}否则{
$line=mysqli\u fetch\u assoc($query);
$\会话['IP']=$行[“IP”];
$\会话['ID']=$行[“ID”];
$\会话['username']=$username;
echo{loggedIn:true,位置:“choose.php”};
}
我希望这对您有意义。为什么不使用
JavaScript
重定向echo
true
并检查返回值是否等于true
,如果返回值等于则重定向。为什么不完全删除ajax?在这种情况下,这似乎只是让事情变得复杂。因为如果登录不成功,我不希望重新加载页面(如果登录不成功,则由JQuery显示消息)。在页面重新加载后,您仍然可以通过php回显登录组合失败的错误消息,但这样他就无法获得漂亮的fadein+抖动,并强制用户等待一两秒钟后再继续。使用JSON将结果发送回javascript-正在工作。