所以我有一个用于重定向的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
答案 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函数重定向到索引页。
希望这有帮助