Php 从AJAX加载选项卡重定向父页面
因此,我有一个用于重定向的php函数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>"
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'时,它工作得很好!谢谢