8

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 を送り返したくはありませんが、実際にはテンプレートをレンダリングします。

4

2 に答える 2