关于javascript:AJAX发布请求Python Flask

AJAX Post Request to Python Flask

本问题已经有最佳答案,请猛点这里访问。

尝试了解如何将post请求发送到后端(flask)。

在HTML中,我有3个复选框和一个提交按钮。我的提交按钮返回一个javascript数组,我正在尝试将该javascript数组发送到API端点"api/regions",您可以在下面看到。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
$(document).ready(function() {
    $("#loadData").click(getChecked);
});
function getChecked() {
    event.preventDefault();
    var checkboxes = $(".form-check input[type=checkbox]:checked");
    //toArray: convert checkboxes object to javascript array
    var labels = checkboxes.toArray().map(checkbox => checkbox.value);

    $.ajax({
        url: 'api/regions',
        type:"POST",
        data: JSON.stringify(labels),
        processData: false,
        contentType:"application/json; charset=UTF-8",
        success: function(response) {
            console.log(response);
        },
        error: function(error) {
            console.log(error);
        }
    });
}

在app.py中,我有一个端点API的路由:

1
2
3
4
5
6
7
8
@app.route('/api/regions', methods=['POST'])
def regions():
    regions = request.json
    with open("C:\\test.txt", 'w') as f:
        f.write(regions)

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

我知道没有返回语句,我只是想写我从中得到的数据

1
regions = request.json

到一个文件。"C: est.txt"

当我试图做到这一点时,我得到的错误是500,这并没有给我太多的工作机会。我不确定我所缺少的是在前端还是后端,所以希望有人能告诉我哪里出错了。


From the Flask Documentation,

If the mimetype is application/json this will contain the parsed JSON data. Otherwise this will be None.

钥匙在那里,是JSON的原始数据,而不是原始数据。如果你想写一份文件,你就必须先把它写回去,也许用json.dumps()

1
2
with open("C:\\test.txt", 'w') as f:
    f.write(json.dumps(regions))