AJAX 向 Python Flask 发布请求 [重复]

Posted

技术标签:

【中文标题】AJAX 向 Python Flask 发布请求 [重复]【英文标题】:AJAX Post Request to Python Flask [duplicate] 【发布时间】:2018-07-04 01:28:09 【问题描述】:

试图了解如何将发布请求发送到我的后端(烧瓶)。

在我的 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,这并没有给我很多工作。我不确定我所缺少的是前端还是后端,所以希望有人可以阐明我哪里出错了。

【问题讨论】:

如果遇到 500 错误,您可能需要在 ajax url 参数中使用前导 /。所以'/api/regions' 而不是'api/regions' 你在你的 python 进程的标准输出上看到了什么吗?还是在您的日志文件中? 【参考方案1】:

来自flask documentation,

如果 mimetype 是 application/json,它将包含已解析的 JSON 数据。否则这将是None

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

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

【讨论】:

以上是关于AJAX 向 Python Flask 发布请求 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Python 的 Flask 中识别通过 AJAX 发出的请求?

Python flask+css+js+ajax 综合复习

Python Flask Cors 问题

flask 轮询

允许使用 Flask 和 React 请求 CORS

前端与后端的数据交互(jquery ajax+python flask)