Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/ant/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 从PHP发出JQuery AJAX请求后重定向_Javascript_Php_Jquery_Ajax - Fatal编程技术网

Javascript 从PHP发出JQuery AJAX请求后重定向

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();

因此,当单击login按钮时,如果登录成功与否,我将使用JQuery POST方法从login.php获取数据。如果未找到(未找到用户),则会正确显示消息

但当我想重定向用户(用户存在)时,它会将整个网页打印到该DIV中

按下JQuery after按钮后:

$(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-正在工作。