php - 会话变量不更新
问题描述
我有两个 php 页面
page1.php
<?php
session_start();
?
<script>
function request(){
$.ajax({
cache: false,
type: "POST",
url: 'page2.php',
success: function(data) {
alert(<?php echo $_SESSION['value'];?>);
},
complete: function() {
setTimeout(function(){request();}, 2000);
}
});
};
</script>
page2.php
<?php
session_start();
$_SESSION['value'] = //Assign a random value.//
echo $_SESSION['value'];
?>
问题是每次调用 Ajax 时 page2.php 都会回显当前的“$_SESSION['value']”值。但是在 page1.php 中,除非我刷新页面,否则警报会显示旧的“$_SESSION['value']”值,之后它会显示当前值,直到再次调用 Ajax 并更新该值。我不知道为什么会这样。
解决方案
想一想:你什么时候被<? ?>
处决?当您的脚本与您的 html 代码在服务器端呈现时。这意味着,除非您刷新页面,否则它是一个常量 - 当您获得另一个常量时。您应该将该值呈现到服务器端 page2 的响应中 - 并回显data
您得到的内容。
推荐阅读
- java - java中的深度优先搜索-无法将节点转换为int
- symfony - Travis 在 Symfony 4 下构建失败创建数据库
- entity-framework-core - 如何在没有内存键的情况下对 EF Core 3 视图进行单元测试?
- javascript - Flex 盒子里面有 2 个 div 里面有一个画布
- java - 使用 Spring Cloud @StreamListener 接收所有类型的消息
- python - 在什么情况下 loc 和 iloc 比仅仅使用 __getitem__ 和 pandas 数据帧更好?
- python - Docker 上的气流 - 路径问题
- java - 如何解决 Intellij IDEA servlet 错误
- nginx - 无法使用公共 IP 访问配置了 nginx 的 EC2 实例
- amazon-web-services - 如何使用自定义分类器使 AWS Glue 爬网程序跳过日志文件的第一行?