【发布时间】:2017-10-05 08:35:22
【问题描述】:
我正在尝试使用此处调用的解决方案: How to keep session alive without reloading page?
很遗憾,我无法让它工作,我对 Javascript 和 jQuery 的经验非常有限。
这是我的 index.php
<?php
session_start();
echo session_id();
$_SESSION['id'] = session_id(); //just so there is a variable within the session
?>
编辑:在评论/回答后添加 jquery 库
<script src="http://code.jquery.com/jquery-latest.min.js" type="text/javascript"></script>
<script>
setInterval(function(){
$.post('refresh_session.php');
}, 60000);
</script>
这是我写入文件的 refresh_session.php,因此我可以测试该文件是否实际被调用。
<?php
session_start();
if (isset($_SESSION['id'])){
$_SESSION['id'] = $_SESSION['id']; // or if you have any algo.
}
$date = new DateTime();
$fp = fopen('data.txt', 'a');
fwrite($fp, $date->format('Y-m-d H:i:s') . " " . session_id() ."\n");
fclose($fp);
?>
如果我手动调用 refresh_session.php,我会在 data.txt 中看到日期。 如果我打开 index.php 并等待 data.txt 文件更改,什么也不会发生。
我在这里错过了什么?
【问题讨论】:
-
通常,PHP 会话需要 cookie,否则 PHP 无法识别会话。您确定
$.post()正在发送 cookie 吗? -
控制台中的任何错误..??还将您的电话包装在 $(document).ready();
-
您的 JS/jQuery 代码没有问题,您要么没有提供正确的
refresh_session.php路径,要么正如 @Manngo 提到的那样。 -
@RohitS 我在控制台“未捕获的语法错误:无效或意外的令牌”中收到一个错误,它指的是 $.根据在线 Javascript 测试员。
-
@LvS 表示您正在尝试在代码中使用 jquey..$ 参考文档对象 ...确保包含 jquery
标签: javascript php jquery session