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

Fetch API提交表单时/addhousehold接口向MySQL插入空值问题

问题解决方案

1. 修正Fetch请求的Content-Type设置

当使用FormData发送请求时,不要手动设置Content-Type: multipart/form-data——浏览器会自动生成包含正确boundary的Content-Type头,手动设置会丢失boundary,导致服务器无法正确解析表单数据。

正确的Fetch代码示例:

// 收集家庭表单数据
const householdForm = document.getElementById('householdForm');
const formData = new FormData(householdForm);

// 发送请求
fetch('/addhousehold', {
  method: 'POST',
  body: formData
  // 不要添加headers里的Content-Type
})
.then(response => response.json())
.catch(err => console.error(err));

2. 配置服务器端的multipart表单解析中间件

如果使用Express框架,默认的express.urlencoded中间件无法处理multipart/form-data类型的请求,需要使用multer中间件:

  1. 安装multer:
npm install multer
  1. 在服务器代码中配置:
const express = require('express');
const multer = require('multer');
const app = express();

// 配置multer(无文件上传时用upload.none())
const upload = multer();

// 给/addhousehold路由添加multer中间件
app.post('/addhousehold', upload.none(), (req, res) => {
  // 现在req.body应该能拿到所有家庭表单字段
  console.log(req.body);
  // 后续数据库插入逻辑
});

3. 检查表单字段的name属性

确认家庭表单的所有输入控件都设置了正确的name属性——服务器端是通过name来识别表单字段的,没有name的字段不会被包含在FormData中,自然无法在req.body中获取到。

示例:

<!-- 正确写法 -->
<input type="text" name="household_address" placeholder="家庭地址">
<!-- 错误写法(仅设置id,无name) -->
<input type="text" id="household_address" placeholder="家庭地址">

4. 验证请求的目标路由

确认“添加家庭”按钮的点击事件绑定的是发送到/addhousehold路由,而非/addCustomer。可以在浏览器开发者工具的Network面板中查看请求的URL,确保路由正确。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 03:48:21