You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JavaScript通过Ajax向Python Flask传数据时出现400错误请求求助

解决AJAX POST到Flask的400错误问题

问题根源

  1. 前端数据格式不匹配:你设置了Content-type: application/json,但直接传递了原始字符串,未封装成JSON对象,导致Flask无法解析请求体,返回400错误。
  2. 后端处理逻辑错误:request.get_json()已经是解析后的JSON对象,无需再用json.load(),且未处理请求体解析失败的情况。

前端代码修改

将发送的数据封装为JSON对象并转为字符串,同时简化AJAX配置:

function send(){
    const line = textbox.value;
    $.ajax({
        type: "POST",
        url: "/send",
        data: JSON.stringify({ data: line }), // 封装为JSON结构并转字符串
        contentType: "application/json", // 明确指定内容类型
        dataType: "json" // 预期返回JSON格式响应
    });
}

后端代码修改

修正JSON解析逻辑,添加错误处理,并确保返回合法响应:

from flask import jsonify

@app.route("/send", methods=["POST"])
def print_data():
    # 解析请求体,失败时返回400
    request_data = request.get_json()
    if not request_data:
        return jsonify({"error": "无效的JSON数据"}), 400
    
    # 获取data字段,不存在时设为空字符串
    data = request_data.get("data", "")
    main.FileMan.post_data(str(data))
    
    # 返回成功响应
    return jsonify({"status": "success"}), 200

额外注意事项

  • 确认前端textbox元素能正确获取值,比如用document.getElementById('textbox').value或jQuery的$('#textbox').val()。
  • 可通过浏览器开发者工具的网络面板查看请求体格式,确认Content-Type头是否为application/json。

内容的提问来源于stack exchange,提问作者Werner van der Merwe

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.02 00:38:16