使用AJAX向Python Flask发送POST请求

12 浏览
0 Comments

使用AJAX向Python Flask发送POST请求

这个问题已经有答案了

如何将JSON数据写入文件?

正在尝试理解如何向我的后端(flask)发送POST请求。

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

$(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的路由:

@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)

我知道没有返回语句,我只是尝试写入从

regions = request.json 

获取的数据到一个文件。 \"C:\\test.txt\"

当我尝试这样做时,我收到的错误是500,这并没有给我很多可以使用的信息。我不确定我缺少什么是在前端还是后端,希望有人能解释一下我错了哪里。

admin 更改状态以发布 2023年5月21日
0
0 Comments

来自flask文档,

如果媒体类型是application/json,则此项将包含解析后的JSON数据。否则,此项将为 None

关键在于 .json 是解析后的JSON数据,而不是原始字符串。如果要将其写入文件,您需要先将其转换回字符串,可以使用 json.dumps() 进行转换:

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

0