【问题标题】:How to redirect user to a page by an ajax call?如何通过ajax调用将用户重定向到页面?
【发布时间】:2015-03-20 20:13:04
【问题描述】:

我有一个登录页面,用户可以在其中输入电子邮件和密码。
因此,我能够对另一个页面进行 ajax 调用以配置数据。
现在,如果电子邮件和密码正确,那么它必须将用户重定向到一个名为“主页”的新页面。
我试过了,但是,它将 div 重定向到页面。
有什么解决办法吗?
提前谢谢大家!

    <script type="text/javascript">
    $(document).ready(function (e) {
        $(".login-form").on('submit',(function(e) {
            e.preventDefault();
            $.ajax({
                url: "verify/login.php",
                type: "POST",
                data:  new FormData(this),
                contentType: false,
                cache: false,
                processData:false,
                success: function(data)
                {
                    $(".login-result").html(data);
                },
                error: function() 
                {
                }           
            });
        }));
    });
</script>

这是简单的请求代码,它的工作完全正常。
现在,在 php 文件中,即 login.php。

if ($email == $dbemail && $password == $dbpassword) {
    header("location:home");
}

在此代码中,页面“home”显示在 div“login-result”中。

【问题讨论】:

  • 如果你想让它重定向,你不能只使用标准的POST 表单操作而不是 ajax 吗?
  • 你能粘贴你现在的代码吗?我的意思是不工作的代码。
  • 在ajax回调中做window.location = URL_TO_PAGE
  • 请发布您的相关代码。你可以使用window.location.href = "www.example.com";
  • 谢谢大家,它的工作! :)

标签: javascript php ajax redirect


【解决方案1】:

问题是,在ajax请求之后,login.php脚本将header发送回浏览器并带有302(重定向)状态码,然后浏览器再次发送主页的GET请求,并返回该请求的结果作为ajax调用的成功。所以,你在.login-resultdiv里面放了一个完整的主页。

现在,如果您只是在成功函数中使用window.location 调用,您将获得以上所有内容以及对主页的另一个 GET 请求。

一种解决方案是将响应作为具有成功或错误状态的 JSON 对象发送。示例:

// login.php
if ($email == $dbemail && $password == $dbpassword) {
    die( json_encode( [ 'success' => 1 ] ) );
} else {
    die( json_encode( [ 'success' => 0, 'error' => 'invalid username or password' ] ) );
}

这样您就可以知道登录是否成功,然后您可以选择适当的操作(重定向或显示错误)。更不用说避免不必要的请求了。

dataType: 'json',
success: function( data )
{
    if ( data.success ) window.location = "home.php"; // change location
    else $(".login-result").html( data.error );
}          

【讨论】:

  • 不使用 cookie 时发回授权令牌怎么样?
猜你喜欢
  • 1970-01-01
  • 2015-03-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-12-25
  • 2011-01-19
  • 2012-04-24
相关资源
最近更新 更多