javascript - 刷新页面 Ajax Flask Web 应用程序

标签 javascript python ajax flask

当我按下表单上的提交按钮时,我想进行 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/

相关文章:

javascript - 如何 .wrap() 从 ajax 调用返回的元素

php - ajax中的删除功能不起作用

javascript - 正则表达式匹配两个不同字符之间的所有内容

javascript - HTML语音聊天宽度Phonegap和node.js

javascript - JSP解析url并匹配关键词

python - Neo4j 无法连接到图形数据库服务器

python - python 中的 ode 集成与 mathematica 结果

javascript - 通信两个或多个浏览器选项卡,哪一个可能是最好的方法?

python - 如何找到里面最短列表的项目索引?

javascript - 我们可以在不向url附加参数的情况下调用ajax get方法吗