我有一个自定义框架,我检测请求是否是我的请求文件中的ajax 。在我的基本控制器中,我检查用户是否已登录:
If user is not logged in:
1. if request is ajax - force JS redirect from PHP (unable to do)
2. if request is not ajax - PHP redirect (header, works)
我不能让1号工作。
这是我的重定向代码:
//User::Redirect
public function redirect($url = SITE_URL, $isAjax = false) {
if ($isAjax === true) {
//its ajax call, echo js redirect
echo '<script>window.location = ' . $url . ';</script>';
} else {
header("Location: {$url}");
}
exit;
}
登录检查代码:
//Basecontroller::__construct
if ( ! $this->user->isLoggedIn()) {
//redirect to login page
$this->user->redirect('/login', $request->ajax());
exit;
}
但不是重定向ajax调用它只是输出<script>window.location = URL</script>
笔记:
我知道我可以对我的每个 AJAX 调用添加检查以从那里进行重定向,但我试图避免这种情况并让我的 PHP 脚本在基本控制器中检测并重定向,而不是我对所有 AJAX 调用添加检查(很多)。