Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/242.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
Php 从AJAX加载选项卡重定向父页面_Php_Javascript_Redirect - Fatal编程技术网

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

Php 从AJAX加载选项卡重定向父页面,php,javascript,redirect,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>"

因此,我有一个用于重定向的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);
}
公共函数重定向($url、$permanent=false、$statusCode=303){
如果(!headers_sent()){
标题('location:'.$url,$permanent,$statusCode);
}否则{
echo“location.href='$url';
}
出口(0);
}
到目前为止,这让我感到惊讶,但假设我正在通过AJAX加载一个选项卡,这需要用户登录。因此,理想情况下,当选项卡加载并检测到用户未登录时,它会将用户重定向到索引页。然而,相反,重定向页面(在我的例子中)只是加载在选项卡内,这是有意义的,但显然不是我想要的:)

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


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

也许你可以用它

top.location.href='$url'
你可以试试

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);
    }
    }
function ajaxresponse()
{
var response = //your ajax request response

if(response == 'AjaxRequest')
{
location.reload();
}
}
解释: 首先检查php是否为ajax请求。 因此,对于重定向,将php的响应作为ajax会话发送,这样您就可以在javascript中检查此响应,而不会发生重定向

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


希望这有帮助

您是否使用iframe作为选项卡?这似乎是我的特定设置的方法。今晚到家后我会查一查。谢谢,我最终让上面的例子起作用,并通过替换
die(“AjaxRequest”)带有
echo“window.top.location.href='$url'由于有时通过AJAX加载“tab”时未设置headers(),所以我仍然希望它在顶层重定向。再次感谢!我希望我的胡言乱语有意义。:)谢谢。起初,这似乎对我不起作用,因为它似乎更像这样。top.location.href='$url',但是当我键入window.top.location.href='$url'时,它工作得很好!谢谢