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

Flask通过request接收Ajax POST提交的数组列表无效问题

问题原因

你拿不到数据是三个错误叠在一起导致的:

  • 前端传参逻辑错误:jQuery的$.ajax默认会把传入的data对象序列化成application/x-www-form-urlencoded格式的表单键值对,复杂嵌套的对象数组用默认方式传会被打散结构,根本保留不了原始的数组嵌套格式;另外你贴的前端代码data: dataToSend后面缺逗号,本身就有语法问题。
  • 请求头配置错误:你没指定发送数据的格式,后端根本没法识别你传的是JSON结构;注意dataType: "json"只是告诉jQuery你预期后端返回JSON,和你发出去的数据格式没关系。
  • 后端取值逻辑完全错误:request.args是用来取URL上拼接的GET查询参数的,POST请求提交的请求体数据根本不会存在这个属性里;而且getlist方法要求传入字符串类型的键名,你传[0]数组当参数本身用法就不对。
正确实现方案

前端修正

发送前把对象数组序列化成JSON字符串,同时指定请求头为JSON格式,补全语法缺漏:

const dataToSend = [{
    "Amobia at 40 mm (J)": "",
    "Diameter (mm)": "",
    "Thickness (mm)": "",
    "Resin/100 (mm)": ""
}, {
    "Amobia at 40 mm (J)": "",
    "Diameter (mm)": "",
    "Thickness (mm)": "",
    "Resin/100 (mm)": ""
}];

$.ajax({
    type: 'POST',
    url: '/your/submit/api', // 替换成你自己的后端接口地址
    dataType: "json",
    contentType: "application/json", // 声明发送的是JSON格式数据
    data: JSON.stringify(dataToSend), // 把JS对象序列化成JSON字符串
    success: function (response) {
        console.log('接口返回', response)
    }
})

后端Flask修正

POST请求的JSON体直接调用request.get_json()就能拿到解析完成的原生Python列表/字典,和前端传的结构完全一致,不需要额外解析:

from flask import Flask, request, jsonify

app = Flask(__name__)

@app.route('/your/submit/api', methods=['POST'])
def handle_submit():
    # 直接获取前端传的对象数组
    recv_list = request.get_json()
    # 打印验证结构
    print("接收到的数组:", recv_list)
    # 按列表索引取值即可,比如取第一个对象的厚度字段
    print("第一条数据的厚度:", recv_list[0]["Thickness (mm)"])
    
    return jsonify(status="success", message="数据接收成功")

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

补充说明:如果非要用表单格式传数组,需要前端给每个字段拼索引键名,后端用request.form.getlist()按键取值,但这种方式处理嵌套对象非常繁琐,传结构化数据优先用上面的JSON方案,出错概率最低。

内容的提问来源于stack exchange,提问作者Puzzlemaster

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 20:42:19