将参数从JQuery发送到Flask

时间:2015-02-09 01:12:05

标签: javascript jquery python flask

我正在尝试将索引页面上的输入(文本字段)中的数据发送回烧瓶进行处理,并将处理后的数据返回到索引页面。

我可以在javascript中显示通过警报输入的值,但是一旦我尝试将其发送到烧瓶,它就不会显示。

以下是我尝试使用的代码。

的script.js

因此,当单击提交按钮时,它会向烧录应用程序发送一个POST命令,其中包含当前文本字段中的任何内容(如index.html所示)。它等待响应并将其输出到“#reply”div

$('#submit').click(function(){
  $.post("/serviceidlookup", {serviceid1: document.getElementById("field")}).done(function (reply) {
    $('#reply').empty().append(reply);
});

flaskapp.py

第一部分使用文本输入和提交按钮设置索引页面。第二部分是由前一个JQuery脚本调用的函数,并传递一个参数。它呈现lookup.html页面并将其返回给JQuery脚本(然后将其输入到“#right”div)

@app.route('/')
def index(name=None):
    return render_template('index.html', name=name)

@app.route('/<serviceid>', methods=["GET", "POST"])
def serviceidlookup(serviceid):
    serviceid2 = serviceid + " extra"
    return render_template('lookup.html', serviceid=serviceid, serviceid2=serviceid2)

lookup.html

这将获取“serviceidlookup”函数传递给它的值,如前所述

{% if serviceid %}
<h1>Hello {{ serviceid }}!</h1>
<h1>And also {{ serviceid2 }}!</h1>
{% else %}
<h1>Hello World!</h1>
{% endif %}

的index.html

这包含用于发送信息的测试字段和按钮。它还包含由JQuery填充的“#right”div

<div id="searchContainer">
<input id="field" name="field" type="text" />
<div id="delete"><span id="x">x</span></div>
<input id="submit" type="submit" value="Search" />
</div>

<div id="reply">
</div>

将参数发送到烧瓶时,一定是我做错了,有人能发现问题吗?

干杯。

1 个答案:

答案 0 :(得分:1)

我认为您的Javascript甚至没有被触发 - 您的script.js中存在语法错误(如果您使用的是Google Chrome浏览器,则可以在javascript控制台中查看语法错误。)

我按照以下方式重新编写了您的应用程序,以使其按预期工作:

<强> flaskapp.py

from flask import Flask, render_template, request

app = Flask(__name__)
app.debug=True

@app.route('/')
def index(name=None):
    return render_template('index.html', name=name)

@app.route('/serviceidlookup', methods=["GET", "POST"])
def serviceidlookup():
    serviceid = request.form.get('serviceid')
    serviceid2 = serviceid + " extra"
    return render_template('lookup.html', serviceid=serviceid, serviceid2=serviceid2)

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

<强>静态/的script.js

  $(document).ready( function() {
        $('#submit').click(function() {
           var serviceid = document.getElementById("field").value;
           $.post(
              "/serviceidlookup",
              { serviceid: serviceid }
           ).done(function (reply) {
              $('#reply').empty().append(reply);
           });
        });
  });