Flask:通过ajax返回按钮的id

3
我的目标是将按钮的ID返回给Python脚本,并用它来控制脚本正在执行的任务。经过整个晚上不断尝试和调试,我感到有些沮丧,因为一定有我忽略的简单方法。
我试图尽可能地简化问题,但无论如何该按钮总会在request.form.get("button")中返回None,从而导致错误400。由于我不太熟悉jQuery,我在那里尝试了很多东西,但从未得到除None外的任何结果。
请问有人能帮帮我吗?
from flask import Flask, render_template_string, request
app = Flask(__name__)

@app.route('/')
def index():
    return render_template_string('''
        <html>
            <head>
                <script type="text/javascript" src="http://code.jquery.com/jquery-2.1.4.min.js"></script>
                <script type="text/javascript">
                    $(document).ready(function() {
                        $('input').on('click', function() {
                            $.ajax({
                                url: "{{ url_for('data_post') }}",
                                method: "POST",
                                data: JSON.stringify($(this).attr("id")),
                                contentType: 'application/json;charset=UTF-8',
                                success: function(data) {
                                    console.log(data);
                                }
                            });
                        });
                    });
                </script>
            </head>
            <body>
                <input type="submit" id="testvalue" name="button" value="button">
            </body>
        </html>
        ''')


@app.route('/data', methods=['GET', 'POST'])
def data_post():
    text = request.form.get("button")
    return text

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

你只发送了ID,但在表单数据中没有为其命名。 - dirn
1个回答

3

data_post函数更改为:

@app.route('/data', methods=['GET', 'POST'])
def data_post():
    text = request.data
    return text

并且一切都应该很好。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接