【发布时间】:2017-11-12 14:27:28
【问题描述】:
我在 php 中创建了一个 $_SESSION。它的一个值是最后一个活动标记。
我想在页面上的<div> 元素上显示戳记。
$_SESSION['LAST_ACTIVITY'] 正在更新 php 部分代码,根据控制台输出,我可以看到它已正确更改:
<?php
$action = $_POST['action'];
switch ($action) {
case 'login': DoLogin(); break;
case 'logout': DoLogout(); break;
case 'update': updateSessionActivity(); break;
default: $errmsg_arr[] = 'Unknown action'; $errflag = true;
}
function updateSessionActivity()
{
if (isset($_SESSION['LAST_ACTIVITY'])) {
$_SESSION['LAST_ACTIVITY'] = time(); // update last activity time stamp
}
echo "Session updated: ".$_SESSION['LAST_ACTIVITY'];
}
?>
在导航窗格选项卡之间切换、发布到 php 页面并更新 $_SESSION 参数时,使用 $ajax 从 jQuery 调用之前的 php 函数(我可以在 echo Session 更新后在网络响应中看到它正确)。
但是,ID 为“page_header_cont”的<div> 元素的 html 仅更新一次(我第一次切换到另一个选项卡窗格时)并且之后不再更改,尽管我继续在选项卡之间切换并看到 POST 与变量一起正常工作更新。
<div id="page_header_cont" class="page_header_cont">
</div>
<script type="text/javascript">
$("a[data-toggle='tab']").on("shown.bs.tab", function (e) {
$.ajax({
url: 'loginprocess.php',
type: 'POST',
data: {action: 'update'},
success: function (response) {
$("#page_header_cont").html(" Last activity: " + "<?php echo date('Y-m-d H:i:s',$_SESSION['LAST_ACTIVITY']) ?>");
},
fail: function (response) {}
});
});
</script>
我错过了什么,为什么 php echo 为变量返回相同的值?在几个浏览器中尝试过,认为这是某种缓存问题,甚至尝试回显 time()。相同的输出。第一次正常工作,然后停止更新。
编辑 我被要求编辑问题以指定它与应该是相同问题的问题有何不同。 我想指出一个事实,即作为重复提供的答案和问题与我的问题中的问题太不同了。 我在页面上冲浪时确实执行了 php 代码,并且我确实更改了我的变量。现在,在得到答案后,我在首页上也更改了它们,并且它们不是“硬编码”的,无论这意味着什么。
【问题讨论】:
-
查看查看源代码。
-
其实这是我看到问题的第一件事。源显示了第一次收到的值,之后永远不会改变。
-
另见stackoverflow.com/questions/12498839/…、stackoverflow.com/questions/7165395/…、stackoverflow.com/questions/8471945/… 等。对
why the php echo returns the same value for the variable?的简短回答是它没有,PHP 被评估一次 on服务器和输出将永远硬编码到您的页面中。 -
我正在写一个答案,但现在话题被锁定了。但是 TL;DR;是这样的:使用
json_encode()让你的PHP返回一个JSON,在你身上读到success选项ajax()(你的响应现在将是一个对象)。 -
meagar,您实际上是错的,因为我明确指出每次切换标签时我都会评估 PHP。 Elias,PHP 正在返回字符串并且它工作正常。无论如何,这个问题已经得到解答,并且有所帮助。
标签: javascript php variables echo