gpt4 book ai didi

Javascript 不会更新 session ,只有页面重新加载才能完成这项工作

转载 作者:行者123 更新时间:2023-11-28 09:36:59 24 4
gpt4 key购买 nike

session 是在 python 代码中设置的。我使用flask作为框架。 session 用户名值保持不变,直到用户重新加载页面。是否有办法用javascript响应 session 值的变化或重新加载必要的部分而不重新加载整个页面?谢谢。

index.html:

<div id="cform">
<form action="" method="get">
<div class="cl">{{ session['username'] }}$ >
<input type="text" class="cli" name="cmd"
autocomplete='off' value="" autofocus />
</div>
</form>
</div>
<script type=text/javascript>
$(function () {
$('form').last().submit(function () {
$.getJSON($SCRIPT_ROOT + '/_cmd', {
cmd: $('input[name="cmd"]').last().val()
}, function (data) {
var $query = $('input[name="cmd"]').last().val();
$("<span>{{ session['username'] }}$ > " + $query + "</span><br />").appendTo("#output");
$(data).each(function (i, val) {
$.each(val, function (k, v) {
$("<span>" + v + "</span><br />").appendTo("#output");
});
});
$("#output").append($("form"));
$("form input").val("").focus();
});
return false;
});
});
</script>
<div id="output"></div>

索引.py:

@app.route('/')
def index():
if 'username' in session:
username = escape(session['username'])
else:
session['username'] = 'guest'

return render_template('index.html')

@app.route('/_cmd')
def cmd():
cmd = request.args.get('cmd')
interpreter = Interpreter(cmd)
output = interpreter.mediator()
return jsonify(output)

最佳答案

我不了解 Flask,但在我看来,你在那里犯了一个错误:

 $("<span>{{ session['username'] }}$ > " + $query + "</span><br />").appendTo("#output");

在这里,您仅在用户加载页面时才永久设置您的用户名,即使用户更新它也是如此。

你应该做类似的事情:

  $("<span>"+data[username] + $query + "</span><br />").appendTo("#output");

在你的后端,类似:

  def cmd:
...
output[username] = session["username"]
...

关于Javascript 不会更新 session ,只有页面重新加载才能完成这项工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12875549/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com