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

Flask猜谜应用点击调用session.clear()无法清除会话变量求助

问题排查与修复

核心问题分析

  1. a标签默认跳转干扰:点击重置链接时,href="/play"会触发页面刷新,导致session.clear()执行后页面重新加载,前端存储的会话数据被重新初始化,用户看不到重置效果。
  2. 页面显示未同步更新:仅调用session.clear()只会清除存储的变量,但页面上的计数器不会自动重置。
  3. 语法错误阻塞代码执行:play.html中初始化counter的代码缺少闭合大括号,会导致JavaScript解析失败:
    var counter = session.get("counter") || {
        submit: -1,  // 此处缺少闭合的 }
    

具体修复步骤

1. 修正语法错误

在play.html的脚本中,补全counter初始化的闭合大括号:

// initialize application defaults
var counter = session.get("counter") || {
    submit: -1
};  // 补全闭合括号

2. 重置链接阻止跳转并同步更新页面

修改页面中的重置链接,添加自定义重置函数并阻止默认跳转行为:

<p>Remember to click <a href="/play" onclick="resetGuesses(); return false;">
<strong>reset guesses</strong></a> when it's time to play a new game.</p>

然后在play.html的脚本中添加resetGuesses函数:

// 重置猜测次数函数
function resetGuesses() {
    // 清除session存储
    session.clear();
    // 重置counter变量为初始状态
    counter = { submit: -1 };
    // 更新页面显示为0次
    var guessEl = document.getElementById("guesses");
    guessEl.firstChild.nodeValue = "0 guesses";
    // 将重置后的counter重新存入session
    session.set("counter", counter);
}

3. 验证sessions.js的代码完整性

确保sessions.js中的返回对象完整闭合:

// public methods
return {
   // set a session variable
   set: function(name, value) {
      store[name] = value;
   },

   // get a session value
   get: function(name) {
      return (store[name] ? store[name] : undefined);
   },

   // clear session
   clear: function() { store = {}; }
};  // 确保此处有闭合的 };

修复后效果

点击重置链接时页面不会跳转,同时:

  • 前端会话存储被清空
  • 页面上的猜测次数立即显示为0 guesses
  • 后续提交表单时,计数器会从0开始重新统计

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 00:55:16