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

在Python中读取AJAX提交的Web表单name/value键值对的方法

问题解答

首先你需要修正前端AJAX代码的笔误:你写的参数是date: cgiString,正确参数名应为data: cgiString,否则后端会收不到任何提交数据。

针对你的三个疑问直接解答如下:

  • 是否需要从STDIN读取数据?
    标准CGI运行模式下,POST请求的载荷确实是通过STDIN传递给脚本的,但你不需要手动读取STDIN,Python内置的cgi模块已经封装了相关逻辑,会自动处理读取、解析操作。
  • 如何解析name/value键值对?
    直接调用cgi.FieldStorage()方法即可解析所有提交的表单字段,无需自己手动拆分序列化的表单字符串。
  • 如何返回JSON格式结果?
    返回前需要先输出符合CGI规范的HTTP响应头,指定Content-Type为application/json,头和内容之间必须空一行,之后输出JSON字符串即可。

完整可用的test.py代码

#!/usr/bin/python3
# 注意:需要给该文件设置可执行权限,否则CGI服务器会无法运行
import sqlite3
import cgi
import json
import io

# 直接解析表单数据,自动处理STDIN读取、键值对拆分逻辑
form = cgi.FieldStorage()

# 读取字段值,第二个参数为默认值,避免对应字段未提交时报错
u_name = form.getvalue('uName', '')
u_phone = form.getvalue('uPhone', '')

# 此处可插入你的业务逻辑,比如写入sqlite3数据库
# 构造返回结果
resp_data = {
    "code": 0,
    "msg": "提交成功",
    "received_data": {
        "uName": u_name,
        "uPhone": u_phone
    }
}

# 输出HTTP响应头,必须加空行分隔头和响应内容
print("Content-Type: application/json\r\n\r\n", end="")
# 输出JSON结果,ensure_ascii=False避免中文乱码
print(json.dumps(resp_data, ensure_ascii=False))

额外注意事项

  • Linux环境下需要给test.py设置可执行权限,执行命令chmod +x test.py即可,否则CGI服务会返回500错误
  • 如果存在跨域请求问题,可以在响应头中补充Access-Control-Allow-Origin: *

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 11:45:01