2017-01-06 10 views
0

私は自分のフォームでsubmitを押すとページをリフレッシュするときにajaxコールを行いたいと思う。 私は問題を抱えています。なぜなら、新しいコメントを追加すると、手動で更新するときにページを更新するだけですが、私がそれを行うと、別の投稿を繰り返し投稿するからです。ページをリフレッシュするAjax Flask Webアプリケーション

<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機能があります:onclickのリロードありえないが働いて、なぜ

@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 

誰でも知っていますか?私はこれをajaxコールを使用して行う必要がありますか?

答えて

1

実際に送信ボタンを押すと、ここには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')) 

この方法であなたの終わりまでを使用する必要があります。

関連する問題