当我按下表单上的提交按钮时,我想进行 ajax 调用,它会刷新页面。 我遇到了麻烦,因为当我添加新评论时,它只会在我手动刷新页面时更新页面,但如果我这样做,它会不断发布另一篇文章。
<div class="form-group">
<form method="POST" action="/create_politician_comment/{{politician.idPolitician}}/{{g.user.uid}}">
{{ form2.hidden_tag() }}
<label for="comment">Comment:</label>
<textarea class="form-control" name="body" rows="5" id="comment" type="text"></textarea>
<a class="btn btn-default btn-sm" role="button" onClick="document.location.reload(true)" type="submit" > {{ form2.submit }} </a>
</form>
</div>
这是我的 create_politician_comment 函数:
@politicians_blueprint.route("/create_politician_comment/<idPol>/<userId>", methods=["GET", "POST"])
@login_required
def create_politician_comment(idPol = 1, userId = 1):
politician = Politic.query.filter_by(idPolitician=idPol).first()
form2 = PostForm()
form2.idPolitician = idPol
form2.idUser = userId
form2.timestamp = datetime.datetime.now()
if request.method == "POST":
users=db.session.query(User).all()
politicianComments=db.session.query(PoliticianComment).filter_by(idPolitician=idPol).all()
flash(form2.errors)
flash(form2.validate())
newComment = PoliticianComment(form2.body.data, form2.idPolitician, form2.idUser, form2.timestamp)
db.session.add(newComment)
db.session.commit()
flash('New comment was successfully posted', 'info')
return render_template("politician.html", datetime=datetime, users=users, politicianComments=politicianComments, role_query=PoliticianRole.query, dom_query=Domain.query,org_query=Organization.query, idPolitician=idPol, politician=politician,form2=form2)
elif request.method == "GET":
return form2
有谁知道为什么 onclick 重新加载不起作用?我需要使用 ajax 调用来完成此操作吗?
最佳答案
实际上,当您按下提交按钮时,这里不涉及 Ajax。按下将导致对您的评论路由发出POST请求。您可以在那里处理数据并返回将显示在浏览器中的 HTML。我想您想要的是一个简单的重定向到您的政客路线。所以而不是
return render_template("politician.html", datetime=datetime, users=users, politicianComments=politicianComments, role_query=PoliticianRole.query, dom_query=Domain.query,org_query=Organization.query, idPolitician=idPol, politician=politician,form2=form2)
你应该使用
return redirect(url_for('politician'))
这样您就会再次进入主页。
关于javascript - 刷新页面 Ajax Flask Web 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41499456/