1

数値のリストを含むフォームを送信したら、JSONそのリストに対して実行された単純な計算の結果を (ファイルから) 抽出し、その結果を<div></div>現在のページのタグ内に出力する必要があります。

以下は、 経由で取得された番号のリストが送信された Flask Python コードですgetlist。計算結果は最終的にJSONviaに変換されjsonifyます。

from flask import Flask,render_template, request, jsonify
app = Flask(__name__)

data = [
('t', 0, 'a'),
('t', 0, 'b'),
('t', 0, 'c'),
('t', 0, 'd')
]

@app.route('/', methods=['GET', 'POST'])
def index():
    entries=[]
    for (i,v) in enumerate(data):
        entries.append(data[i][2])
    return render_template('test.html', entries=entries)


@app.route('/_numbers', methods=['GET', 'POST'])
def numbers():
    a = request.form.getlist('a')
    print a
    L=0
    v=0
    an=0
    for L,v in enumerate(a):
        an+=float(v)
    return jsonify(res=an)

if __name__ == '__main__':
    app.debug = True
    app.run()

test.html ファイルは次のようになります。

{% extends "test0.html" %}
{% block body %}

<h2>Get the sum of 4 numbers</h2>
<form action="{{ url_for('numbers')}}" method=post>
    {% for L in entries %}

              <input type=float size=5 name=a>

              {% if loop.last==True %}             
                  <input class="btn btn-primary" type="submit" value="Calc" id="calculate"> 
                  </form>
              {% endif %}
    {% endfor %}

{% endblock %}

送信すると、JSONファイルの形式で正しい回答が得られます (例):

{
  "res": 10.0
}

取得した値を抽出して JQuery 経由で表示するには? 私は試しましgetJSONたが、成功しませんでした。助けてくれてありがとう。

4

1 に答える 1

2

現在のページに結果を挿入する場合は、Ajax 経由でフォームを送信する必要があり、完了コールバックで JSON 応答を取得します。

jQuery 用のAjaxFormプラグインを見てみましょう。これにより、HTML フォームの送信ボタンを Ajax 送信に変換できます。以下は、プラグインのドキュメントから抜粋した短い例です。

<script> 
    $(document).ready(function() { 
        // bind 'myForm' and provide a simple callback function 
        $('#myForm').ajaxForm(function(response) { 
            var result = jQuery.parseJSON(response);
            $('#someDiv').innerHTML = result.res
        }); 
    }); 
</script>
于 2013-11-05T15:36:04.860 に答える