Javascript 刷新网页Ajax Web应用程序

Javascript 刷新网页Ajax Web应用程序,javascript,python,ajax,flask,Javascript,Python,Ajax,Flask,我想在表单上按submit时调用ajax,它会刷新页面。 我遇到了麻烦,因为当我添加新评论时,它只会在我手动刷新页面时更新页面,但如果我这样做,它会不断地发布另一篇文章 <div class="form-group"> <form method="POST" action="/create_politician_comment/{{politician.idPolitician}}/{{g.user.uid}}"> {{ form2.hidden_

我想在表单上按submit时调用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>

{{form2.hidden_tag()}}
评论:
{{form2.submit}
下面是我的create_political_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
@polities\u blueprint.route(“/create\u political\u comment/”,方法=[“GET”,“POST”])
@需要登录
def创建注释(idPol=1,userId=1):
political=Politic.query.filter_by(idPolitician=idPol.first())
form2=PostForm()
表2.idPolitician=idPol
form2.idUser=userId
form2.timestamp=datetime.datetime.now()
如果request.method==“POST”:
users=db.session.query(User.all)()
politicianComments=db.session.query(PoliticianComment).filter_by(idPolitician=idPol).all()
闪存(格式2.错误)
flash(form2.validate())
newComment=PoliticianComment(form2.body.data、form2.idPolitician、form2.idUser、form2.timestamp)
db.session.add(新成员)
db.session.commit()
flash('新评论已成功发布','信息')
返回呈现模板(“political.html”,datetime=datetime,users=users,politicianComments=politicianComments,role\u query=PoliticianRole.query,dom\u query=Domain.query,org\u query=Organization.query,idPolitician=idpolitical,form2=form2)
elif request.method==“GET”:
返回表格2

有人知道为什么onclick重新加载不起作用吗?我需要使用ajax调用吗?

实际上,当您按下提交按钮时,这里没有涉及ajax。按将导致对您的评论路线发出POST请求。在这里,您可以处理数据并返回HTML,这些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'))
这样,你的网页又会出现在主页上