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

时间:2010-09-14 04:20:16

标签: php javascript redirect

所以我有一个用于重定向的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加载到DIV标签中的HTML

2 个答案:

答案 0 :(得分:3)

关于“标签”

的含义,您的问题并不完全清楚

也许你可以使用

top.location.href='$url'

答案 1 :(得分:1)

你可以尝试

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请求。 所以对于重定向,从php发送响应作为ajax会话,这样你就可以在javascript中查看这个不会发生重定向的响应。

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

希望这有帮助

相关问题