首页 > 解决方案 > 会话变量不更新

问题描述

我有两个 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 并更新该值。我不知道为什么会这样。

标签: phpjqueryajax

解决方案


想一想:你什么时候被<? ?>处决?当您的脚本与您的 html 代码在服务器端呈现时。这意味着,除非您刷新页面,否则它是一个常量 - 当您获得另一个常量时。您应该将该值呈现到服务器端 page2 的响应中 - 并回显data您得到的内容。


推荐阅读