如何在Flask中处理请求JSON数据

时间:2019-09-30 13:03:03

标签: javascript jquery ajax post flask

我想通过单击按钮将html格式的json格式的数据发送到url,但是当前数据尚未更新到url。我在此处包括了我要发布的数据的一小部分。 GET方法可以很好地将初始输出发布到url。 Ajax请求的结果是警报错误输出。如何使用POST成功将输出更新到url?

html:

<button type="submit" class="btn-sm btn-success btn-space" id ="commitButton" name="commitButton" value="enter">Commit</button>

Javascript:

<script>

    document.getElementById('commitButton').onclick = function() {
        $.ajax({
            url: "/processjson",
            type:'POST',
            headers: {
                'X-CSRF-TOKEN': '{{ csrf_token() }}'
            },
            "dataType": "json",
            "data": {"schema": {"fields":[{"name":"index","type":"integer"},{"name":"OB_TIME","type":"datetime"},{"name":"LATITUDE","type":"number"},{"name":"LONGITUDE","type":"number"}]}, "data": [{"index":0,"OB_TIME":"2015-09-03T00:00:00.000Z","LATITUDE":21.9,"LONGITUDE":-152.0}]},
            "contentType": "application/json",
             success: function(result) {
                            alert('ok');
                        },
             error: function(result) {
                            alert('error');
                        }
        })
    };

</script>

烧瓶:

@app.route('/processjson', methods=['GET','POST'])
@login_required
def processjson():
    if request.method == 'GET':
        return jsonify({'result':'Test'})

    # getting the table data when the commit button is pressed
    if request.method == 'POST':
        # gets jsonified data and convert it to a python data structure (dictionaries)
        data = request.get_json()
        fields = data['schema']['fields']
        tableData = data['schema']['data']
        return jsonify({'result':'Success!','tableData' : tableData})

3 个答案:

答案 0 :(得分:0)

将json数据放入请求正文中。 您可以使用request.form.get('data')访问请求正文以获取json字符串。可以使用json.load(json_str)将其加载到字典中。

答案 1 :(得分:0)

request.get_json()将表单数据解析为json,但是如果您要提交为表单数据,则此方法将起作用。查看JS代码段,您似乎没有将其作为表单数据提交(正在进行ajax调用),因此您的数据将在属性request.json

中可用

答案 2 :(得分:0)

您可以这样使用:request.json