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 回答