【问题标题】:Updating server side Flask sessions with AJAX not working使用 AJAX 更新服务器端 Flask 会话不起作用
【发布时间】:2019-01-10 14:08:11
【问题描述】:

我试图弄清楚为什么我的 AJAX 脚本不会更新我的 Flask 应用的服务器端会话。

使用 sqlalchemy 实现了 Flask-Session。我可以看到数据库中的表和加密的会话数据。

init.py

...

from flask_session import Session

app = Flask(__name__)
app.config.from_object(Config)
db = SQLAlchemy(app)
Session(app)

...

config.py

...

SESSION_TYPE = 'sqlalchemy'
SESSION_SQLALCHEMY_TABLE = 'app_sessions'

Ajax 调用正常,因为我得到了正确的响应。

$.post("/ajax_fnc/_update_session", post_data)
            .done(function(data) {
                console.log(data)
})

Flask 应用返回更新后的 cart_data:

...
@app.route('/ajax_fnc/_update_session', methods=['POST'])
def ajax_update_session():

    session['cart_data']['qty'] = 1
    return jsonify(session['cart_data']['qty'])

浏览器控制台记录来自 Flask 应用程序的更新且正确的响应。但是刷新站点会加载购物车数据量为 0 的会话。所以它不起作用。

如何使用 AJAX 更新服务器端会话并使其保持不变?我错过了什么?

注意:在服务器端使用购物车数量 0 初始化会话可以正常工作。就在我尝试使用 Ajax 进行更新时,它并没有坚持下去。我花了半天多的时间寻找答案,但似乎找不到我遗漏的(或不理解的)。

【问题讨论】:

    标签: ajax python-3.x session flask


    【解决方案1】:

    Shoot,经过大量挖掘后发现,每次发出 http 请求时都会调用我的初始化函数。所以......当然,ajax 更新永远不会持续存在。

    重新定位初始化函数,服务器端会话工作正常。

    【讨论】:

      猜你喜欢
      • 2017-12-22
      • 1970-01-01
      • 2015-08-23
      • 2019-04-05
      • 2013-05-20
      • 1970-01-01
      • 1970-01-01
      • 2011-06-22
      • 2016-08-20
      相关资源
      最近更新 更多