为了账号安全,请及时绑定邮箱和手机立即绑定

如何在 ajax 中成功的 php if 语句后重定向?

如何在 ajax 中成功的 php if 语句后重定向?

PHP
慕桂英4014372 2022-12-11 10:07:09
PHP 正如您在下面的 PHP 代码中看到的那样,我正在尝试重定向用户,但我在 jquery 中很难做到这一点。我想要的是如果登录语句成功login_success那么用户将重定向到 myprofile.php 但什么也没有发生。    if($query)          {             $num=mysqli_fetch_array($query); //fetching all matching records                if($num > 0)                 {                  //if record found                    $_SESSION["loggedin"] = TRUE;                    $_SESSION['cid']=$num['cid'];                    echo  "login_success";                }                else                {                    echo "invalid email or password.";                }           }else           {             echo "something went wrong!";           }阿贾克斯:$.ajax({                         url:"sql/login_process.php",                         method:"POST",                         data:$('#login_form').serialize(),                         beforeSend:function(){                              $('#login_response').html('<span class="text-info"><i class="fas fa-spinner"></i> Loading response...</span>');                         },                         success:function(data){                              $('form').trigger("reset");                              $('#login_response').fadeIn().html(data);                              setTimeout(function(){                                   $('#login_response').fadeOut("slow");                              }, 7000);                            if(data == "login_success") location.href = "http://www.example.com/myprofile.php";                       }                    }); 我想我在这里遗漏了一些东西。if(data == "login_success") location.href = "http://www.example.com/myprofile.php";
查看完整描述

2 回答

?
慕运维8079593

TA贡献1876条经验 获得超5个赞

*更新下面提到的@Patrick Q 似乎可以回显数据。您能否尝试修剪在 javascript/jquery 中收到的数据以检查意外的空格


data.trim()

如果您想添加更多变量,您可以执行以下解决方案。(或者如果你喜欢的话)


您不应该回显 ajax 的结果。相反,您应该将其作为 json 返回


PHP文件:


$ajax_result = array():

$ajax_result['success'] = false;

$ajax_result['message'] = 'Incorrect login data';


if(something)

{

    $ajax_result['success'] = 'login_success';

    $ajax_result['message'] = 'You were logged in. You will be redirected now.';

}


header('Content-type:application/json;charset=utf-8');

echo json_encode($ajax_result);

这会将结果作为数组返回到前端,您可以通过选择带有 data.success 或 data.message 等的变量来对其进行操作。


查询/Javascript:


     $.ajax({  

       url:"sql/login_process.php",  

       method:"POST",  

       data:$('#login_form').serialize(),  

       beforeSend:function(){  

            $('#login_response').html('<span class="text-info"><i class="fas fa-spinner"></i> Loading response...</span>');  

       },  

       success:function(data){  

            $('form').trigger("reset");  

            $('#login_response').fadeIn().html(data.message);  

            setTimeout(function(){  

                 $('#login_response').fadeOut("slow");  

            }, 7000);


            if(data.success == "login_success") location.href = "http://www.example.com/myprofile.php";

       }  

  }); 

这是最基本的用法。您可以修改它以保护只能从 ajax 查询等访问。


查看完整回答
反对 回复 2022-12-11
?
米脂

TA贡献1836条经验 获得超3个赞

老实说,我喜欢这里的 Patrick Q Idea,这是我到目前为止所取得的成就。


阿贾克斯


  success:function(data){  

      if(data != null && data == "success"){ //redirect...

               window.location = "http://google.com";

    } else { //report failure...


                   $('form').trigger("reset"); 

                   $('#login_response').fadeIn().html(data);

                   setTimeout(function(){  

                   $('#login_response').fadeOut("slow");  

                   }, 7000);

              }

    }  

PHP


          if($num > 0) 

            {

              //if record found

                $_SESSION["loggedin"] = TRUE;

                $_SESSION['cid']=$num['cid'];


                echo "success";


            }


查看完整回答
反对 回复 2022-12-11
  • 2 回答
  • 0 关注
  • 88 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信