【发布时间】:2014-11-05 21:43:09
【问题描述】:
好的,所以我目前在 PHP 中使用这样的东西来重定向用户:
//This is a simplified version, but demonstrates it's use.
function redirect($location) {
header("Location: $location");
}
如果用户的会话已过期,或者如果他们尝试执行需要他们登录的操作,则将用户重定向到登录页面,这会将他们发送到 404 页面。
所以在 PHP 中我可以输入:
redirect("index.php/xyz");
我的问题是我现在使用大量通过 Ajax 调用的 PHP 来处理表单和更新内容等事情;而且这种重定向方法在通过 Ajax 调用时不起作用。
我打算只更改此函数以使用 Javascript 而不是 PHP。
所以我会使用这样的东西:
function redirect($location) {
echo '<script>';
echo 'window.location.replace("'.$location.'");';
echo '</script>';
}
据我所知,这适用于普通的 PHP 使用和对 PHP 的 Ajax 调用。
这是不好的做法吗?目前仅将其用于 Ajax 调用会导致大量代码开销,因此将其用于所有事情是有意义的。
澄清;我正在寻找一种适用于普通 PHP 和对 PHP 的 Ajax 调用的解决方案,因此我可以对两者使用相同的代码 - 而不必分别进行。例如在提交表单时,action="dosomething.php",根据情况,该文件可能只是在数据库中添加一行或重定向到某个页面。但这可以使用 Ajax 或普通的 HTML 表单操作来调用。
【问题讨论】:
-
如果你理解正确,你想重定向ajax调用还是只需要发送404?
-
以您喜欢的方式等。仅使用
redirect函数进行重定向可能很好,但您还需要eval返回的javascript 以及我一般不喜欢的。在我看来,除非你想改变逻辑,否则你无法避免在客户端出现eval。 -
@RahilWazir 我想重定向 ajax 调用和普通 PHP 调用。我在问题末尾添加了一个示例。
标签: javascript php ajax function redirect