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

React+Express表单提交后req.body为空,求助解决方法

嘿,我帮你找出两个关键问题啦,解决这两个点应该就能搞定req.body为空的问题:

问题1:textarea缺少name属性

表单提交的字段必须要有name属性,后端才能通过这个名称识别并提取对应的值。你现在的textarea只设置了defaultValue,但没有name,所以后端接收不到任何表单数据。

修改你的前端textarea代码,加上name属性(比如命名为queryData):

<textarea 
  name="queryData"
  defaultValue={JSON.stringify({ collection, fieldSets, responseType: 'csv' })} 
/>

问题2:表单提交路径和后端路由不匹配

你前端表单的action是/api/query,但后端的POST路由写的是/query,这就导致表单提交的请求根本没走到你写的那个处理函数里,自然拿不到req.body。

把后端的路由改成和前端匹配的/api/query:

app.post('/api/query', (req, res) => {
  console.log('reqbody is...', req.body);
  // 后续处理逻辑
});

额外优化建议

如果你的表单没有涉及文件上传,用upload.none()替代upload.array()会更合适,它专门处理不带文件的multipart/form-data请求:

app.use(upload.none());

完成以上修改后,你就能在后端拿到req.body.queryData,里面是你序列化后的JSON字符串,再用JSON.parse(req.body.queryData)转成对象就可以正常处理啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 07:16:05