代码之家  ›  专栏  ›  技术社区  ›  Kenny Cason

从AJAX加载选项卡重定向父页

  •  3
  • Kenny Cason  · 技术社区  · 14 年前

    所以我有一个php函数用于重定向

    public function redirect($url, $permanent=false, $statusCode=303) {
        if(!headers_sent()) {
            header('location: '.$url, $permanent, $statusCode);
        } else {
            echo "<script>location.href='$url'</script>";
        }
        exit(0);
    }
    

    到目前为止,这让我感到很惊奇,但是假设我正在通过AJAX加载一个选项卡,这需要用户登录。因此,理想情况下,当选项卡加载并检测到用户未登录时,它会将用户重定向到索引页。但是,重定向的页面( http://localhost/something/index.php 在我的例子中)只是加载到选项卡中,这是有意义的,但显然不是我想要发生的:)

    然而,有没有一个php解决方案可以做到这一点?或者,如果用户没有登录,我应该在根级别使用JavaScript重定向函数,从加载的AJAX选项卡调用它吗?

    编辑: 对不起的。为了澄清我所说的tab是什么意思,它只是通过AJAX将HTML加载到DIV标记中

    2 回复  |  直到 14 年前
        1
  •  3
  •   JeremyWeir    14 年前

    你的问题不完全清楚你所说的“标签”是什么意思

    top.location.href='$url'
    
        2
  •  1
  •   Nik    14 年前

    你可以试试

    php函数

    public function redirect($url, $permanent=false, $statusCode=303) {
    
        if($_SERVER['HTTP_X_REQUESTED_WITH'] === "XMLHttpRequest"){
        die("AjaxRequest");
        }
        else{
            if(!headers_sent()) {
                header('location: '.$url, $permanent, $statusCode);
            } else {
                echo "<script>location.href='$url'</script>";
            }
            exit(0);
        }
        }
    

    Javascript函数

    function ajaxresponse()
    {
    var response = //your ajax request response
    
    if(response == 'AjaxRequest')
    {
    location.reload();
    }
    }
    

    首先检查php是否是ajax请求。

    在javascript中检测到这个响应后,可以从javascript函数重定向到索引页。

    希望这有帮助