【发布时间】:2018-01-24 08:21:07
【问题描述】:
我有一个显示时间表的网页区域,用户可以单击左右来前进/后退一周:
<script type="text/javascript">
var TimesheetOffset = 0;
function TimesheetNav(AdjustBy) {
TimesheetOffset = TimesheetOffset + AdjustBy;
$("#timesheets").load("populate_timesheets.php?start=" + TimesheetOffset);
}
</script>
populate_timesheets.php 脚本在 ID 为“timesheets”的 DIV 区域中显示时间表信息,但前提是用户已登录且他们的会话未过期 - 如果会话已过期,则会显示登录页面:
if (!isset($_SESSION['login_user'])) {
header("location: index.php");
}
问题在于,如果会话超时,index.php 脚本会出现在应该显示时间表的位置,而不是替换整个页面。如何更改 PHP 或 JavaScript,以便在会话超时时登录页面替换整个页面?
【问题讨论】:
-
您可以将
$("#timesheets").load()更改为您可以处理响应代码的内容。您还可以轮询服务器以保持会话处于活动状态或在超时的情况下重定向..您还可以更改会话上的 gc 以使其停留更长时间。到目前为止,您尝试了很多事情? -
您不能从后台请求重定向“前端”。您需要在前端 in 执行此操作,这意味着使用 JavaScript 重定向到登录页面。所以你的服务器端脚本只需要返回一个 value 给你的 JavaScript,它可以作为这个决定的依据。这可能意味着您一开始就不想使用 .load,因为它没有内置的那种功能。因此,“正常”的 AJAX 请求可能是更好的选择,它可以让您更灵活地应对两种不同的情况。
标签: javascript php jquery