我对Flask会话的理解是,您可以在任何地方保存它,也可以在任何地方访问它。只是它没有被拯救。我正在使用axios.get从我的jinja文件中的脚本中获取多个变量。唯一能弄清楚如何设置多重的方法是在延迟之后执行另一个axios调用。
我已经想了大概四个小时了,但我什么都没做。我最初没有使用/saved,并在getmethod路由中做了“工作”,但后来我意识到每次在JS中调用axios.get时,它都会做这个工作。我尝试使用全局变量,如全局x,x= jsdata,然后在if in会话‘’name‘= x...but之外,它说x是未定义的。
编辑:刚刚尝试了session.modified = True,但仍然没有工作。
我的代码:
JS
btn = document.querySelector('.btn')
let newBoard = '';
btn.addEventListener('click', function(e) {
e.preventDefault()
newB()
axios.get(`/getmethod/${newBoard}`)
axios.get(`/getmethod/${clk.innerHTML}`)
axios.get(`/getmethod/${solved}`)
alert("You saved the game!")
setTimeout(() => {
axios.get('/saved')
}, 1000);
})
function newB() {
let board = document.querySelectorAll('input')
for (let i = 0; i < board.length; i++) {
if (board[i].value === '') {
newBoard += '0'
}
else {
newBoard += board[i].value
}
}
return newBoard
}瓶
@app.route('/getmethod/<jsdata>')
def get_javascript_data(jsdata):
"""Gets clock/board from javascript to save a game if logged in"""
if len(jsdata) == 81:
if "0" in jsdata:
session['board'] = jsdata
else:
session['solved'] = jsdata
if jsdata == "Easy" or jsdata == "Medium" or jsdata == "Hard":
session['level'] = jsdata
if ":" in jsdata:
session['clock'] = jsdata
return jsdata
@app.route('/saved')
... works with variables set in route above
...level = session.get('level', None)
...print(level) DOES NOT equal what was set in route above发布于 2020-10-21 19:44:14
我还没有弄清楚会话到底发生了什么,也没有像我预期的那样保存,但我找到了一个使用axios的解决方案,而不仅仅是axios。
https://stackoverflow.com/questions/64420393
复制相似问题