重定向父页面加载标签

问题描述:

所以我有一个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解决方案来做到这一点?或者,如果用户没有登录,我应该在根级别从加载的AJAX选项卡调用JavaScript重定向功能?

编辑:对不起。为了澄清我的意思是标签,它只是HTML通过AJAX

加载到DIV标签
+0

您是否使用iframe作为标签? – sheeks06 2010-09-14 04:25:27

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

也许这会为你工作使用

top.location.href='$url' 
+0

非常感谢。起初,这似乎并没有为我工作,因为它似乎工作更像this.top.location.href ='$ url' ,但是当我键入window.top.location.href ='$ url'它的工作精细!谢谢 – 2010-09-15 21:10:36

你可以尝试

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); 
    } 
    } 

JAV ascript功能

function ajaxresponse() 
{ 
var response = //your ajax request response 

if(response == 'AjaxRequest') 
{ 
location.reload(); 
} 
} 

释: 在PHP首先检查是否是AJAX请求。 所以为了重定向,发送来自php的响应作为ajax会话,这样你就可以在javascript中查看这个响应,而不会发生重定向。

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

希望这会有所帮助

+0

这似乎是我的特定设置的方式。今晚我回家时我会检查一下。谢谢, – 2010-09-14 13:48:48

+1

我最终得到了上面的例子工作,我最终通过更换'die(“AjaxRequest”);''与'echo“来混合你的答案”; '因为有时当一个“标签”通过AJAX加载并且header()尚未设置时,我仍然希望它在顶层重定向。再次感谢! – 2010-09-15 21:14:33

+0

我希望我随意的喋喋不休。 :) – 2010-09-15 21:14:57