jQuery $.post() を使用してフォームからフラスコ関数にデータを送信します。この関数は、データの長時間実行計算を行います。この場合、HTML を送り返すのではなく、新しいテンプレートをレンダリングします。jQuery/AJAX を使用して関数を呼び出すときに、これを行うにはどうすればよいですか?
フォーム:
<form id='myform'>
<input type='text'> some input...
<input type='button' value='send form' id='mybutton'>
</form>
フォーム入力の計算には時間がかかるので、jQuery で送信します。
$.("#mybutton").click(function() {
// get the data in form
$exampledata = 'foo'
$.post("/some/flask/function", {'data': $exampledata}, function(response) {
can I render a new template here with data from flask function?
});
});
フラスコでは、対応する関数は次のようになります。
@app.route('/some/flask/function', methods=['POST'])
def longCalculation():
form = request.form
data = form['data']
result = runTheLongCalculation(data)
this does not work -->
return render_template('result.html',r=result)
how can I render a new template after an jQuery/AJAX call?
リダイレクト URL と JSON を送り返したくはありませんが、実際にはテンプレートをレンダリングします。