You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在外部JQuery文件中获取动态刷新的PHP Session变量值?

解决方案:动态更新PHP传递的JS变量值

你遇到的核心问题是:首次加载页面时定义的全局correct_answer变量,在通过load()动态替换DOM后不会自动更新——因为动态加载的内容只是替换了页面的部分HTML,不会重新执行主PHP文件里的JS赋值代码。下面给你几个实用的解决思路:

方法1:把新值嵌入动态加载的DOM的data属性中

修改includes/practise.inc.php,在被加载的#test_main元素上添加一个存储正确答案的data属性:

<div id="test_main" data-correct-answer="<?php echo $_SESSION['correct_answer']; ?>">
  <!-- 这里是原来的动态内容 -->
</div>

然后在load()方法的回调函数里,读取这个data属性更新全局变量:

$(document).on('click', "#reload_btn", function() { 
  $("#test_main").load("includes/practise.inc.php #test_main > *", function() {
    // 加载完成后更新变量
    correct_answer = $("#test_main").data("correct-answer");
  });
});

这样每次点击刷新按钮,都会从新加载的DOM里拿到最新的正确答案。

方法2:直接在动态生成的按钮上绑定正确答案

如果只需要在点击yes-btn时用到这个值,可以直接把答案绑定到按钮的data属性上。修改practise.inc.php里的按钮生成代码:

<button id="yes-btn" data-correct="<?php echo $_SESSION['correct_answer']; ?>">Yes</button>
<button id="no-btn">No</button>

然后修改JS的点击事件,直接从按钮本身读取值:

$(document).on('click', "#yes-btn", function() {
  const correct_answer = $(this).data("correct");
  console.log(correct_answer); // 现在拿到的是最新值
  // 后续样式修改代码
  $(this).css({"background-color": "green", "color": "white"});
  $("#no-btn").css({"background-color": "red", "color": "white"});
});

这种方法不需要依赖全局变量,避免了全局变量更新不及时的问题。

方法3:通过AJAX单独请求最新的正确答案

如果需要在多个地方用到这个值,可以写一个简单的PHP接口返回最新的答案(比如get_correct_answer.php):

<?php
session_start();
echo $_SESSION['correct_answer'];
?>

然后在刷新按钮的点击事件里,先请求这个接口拿到新值,再加载页面内容:

$(document).on('click', "#reload_btn", function() { 
  // 先获取最新答案
  $.get("get_correct_answer.php", function(newAnswer) {
    correct_answer = newAnswer;
    // 再加载页面内容
    $("#test_main").load("includes/practise.inc.php #test_main > *");
  });
});

这三种方法都能解决你遇到的动态更新问题,你可以根据自己的项目场景选择最合适的一种。

内容的提问来源于stack exchange,提问作者ZuooMan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.15 09:55:19