【问题标题】:Pass just one field via AJAX with Flask使用 Flask 通过 AJAX 仅传递一个字段
【发布时间】:2016-08-25 13:07:03
【问题描述】:

我有一个非常简单的 HTML 表单,其中只有一个 <input type='text'> 字段,一个电子邮件地址,我需要通过 AJAX 将其传递回 Python 脚本。我似乎无法在另一端收到价值。 (由于只有一个字段,是否可以避免所有 JSON 编码/解码?)

代码如下:

from flask import Flask, render_template, request, json
import logging

app = Flask(__name__)

@app.route('/')
def hello():
    return render_template('index.htm')

@app.route('/start', methods=['POST'])
def start():
    # next line outputs "email=myemail@gmail.com"
    app.logger.debug(request.json);
    email = request.json['email'];
    # next line ALSO outputs "email=myemail@gmail.com"
    app.logger.debug(email);
    return json.dumps({ 'status': 'OK', 'email': email })

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

以及从 HTML 端发送 AJAX 的 Javascript--

$( "form" ).on( "submit", function( event ) {
    event.preventDefault();

    d = "email=" + $('#email').val();  // this works correctly

    // next line outputs 'sending data: myemail@gmail.com'
    console.log("sending data: "+d);

    $.ajax({
        type: "POST",
        url: "{{ url_for('start') }}",
        data: JSON.stringify(d),
        dataType: 'JSON',
        contentType: 'application/json;charset=UTF-8',
        success: function(result) {
            console.log("SUCCESS: ");

            // next line outputs 'Object {email: "email=myemail@gmail.com", status: "OK"}'
            console.log(result);
        }
    });
});

【问题讨论】:

    标签: javascript jquery python json ajax


    【解决方案1】:

    JSON.stringify 用于将对象转换为 JSON 格式的字符串,但您没有对象,只有字符串。试试这个:

    var d = { email: $('#email').val() };
    

    JSON.stringify(d) 现在会将其转换为 JSON 格式的字符串:

    {email: "myemail@gmail.com"}可以被flask解析。


    要在没有 JSON 的情况下执行此操作:

    var d = { email: $('#email').val() };
    ...
    // AJAX
        data: d,
        success: ...
    

    这会将{email: "myemail@gmail.com"} 转换为email=mymail@gmail.com 并将其作为POST 请求的正文发送。在 Flask 中,使用request.form['email']

    【讨论】:

      猜你喜欢
      • 2014-02-02
      • 1970-01-01
      • 1970-01-01
      • 2017-04-03
      • 2016-08-17
      • 2021-12-01
      • 2016-03-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多