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

Python Flask与jQuery.post配合使用时无法正常获取提交参数怎么办

问题原因
  • 核心错误是Flask侧取参方式不匹配:request.args 仅用于读取URL后缀的查询参数(即URL中?后面拼接的key=value内容),而jQuery $.post 默认将提交的data放在POST请求的请求体中,格式为application/x-www-form-urlencoded,不会出现在URL参数里,所以读取结果为空。
  • 首次运行正常属于巧合:大概率是首次测试时你误将参数拼接在URL后、或者临时用GET请求测试接口,刚好匹配了request.args的取参逻辑,后续调整为标准POST提交后逻辑就失效了。
解决方案

两种方案二选一即可:

方案1:前端代码不变,仅调整Flask取参逻辑

不需要修改前端提交逻辑,适配jQuery默认的表单提交格式:

import json
from uuid import uuid4
from flask import request

@app.post('/approve')
def approve_topic():
    # 从POST表单中读取参数并转为字典
    args = request.form.to_dict()
    print(args)
    json.dump(args, open("topics/"+uuid4().hex+".json", "w"))
    return {"status":"clear"}

方案2:前后端统一用JSON格式提交,适配复杂参数场景

如果后续需要传递嵌套结构等复杂参数,推荐用JSON格式交互:
首先修改前端jQuery代码,指定JSON提交格式:

$.post({
    url: "/approve",
    contentType: "application/json",
    data: JSON.stringify({"title":title,"content":content}),
    success: function(){
        window.location.reload(true)
    }
});

再修改Flask侧代码读取JSON请求体:

import json
from uuid import uuid4
from flask import request

@app.post('/approve')
def approve_topic():
    # 读取JSON格式的请求体数据
    args = request.get_json()
    print(args)
    json.dump(args, open("topics/"+uuid4().hex+".json", "w"))
    return {"status":"clear"}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 16:27:03