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

jQuery POST请求发送undefined数据至后端,MongoDB无法保存数据问题求助

jQuery POST请求发送undefined数据至后端,MongoDB无法保存数据问题求助

嘿,我仔细看了你的代码,发现两个核心问题导致数据没法正常保存到MongoDB,咱们一个个来解决:


问题1:后端没配置JSON请求体解析中间件

Express框架默认不会自动解析JSON格式的请求体,所以你前端发了JSON数据过来,后端的req.body还是会是undefined。解决方法很简单,在app.use(cors())之后加上一行解析JSON的中间件:

修改后的后端代码片段:

app.use(cors());
// 新增这行,让Express能解析JSON格式的请求体
app.use(express.json());

问题2:前后端字段名不匹配

你前端POST的数据里写的是itemQuantity: $('#quantity').val(),但后端MongoDB的Schema定义的字段是quantity,字段名对不上的话,即使请求体被解析了,数据库也存不上正确的数量值。得把前端的字段名改成和Schema一致:

修改后的前端script.js片段:

let request = JSON.stringify({
  name: $('#name').val(),
  price: $('#price').val(),
  // 把itemQuantity改成quantity,和后端Schema对应
  quantity: $('#quantity').val()
});

额外的小优化(可选但推荐)

你前端$.ajax里的type: "json"其实应该是dataType: "json",这个参数是告诉jQuery期望后端返回什么格式的数据,虽然不是核心问题,但修正后更规范。另外建议加上请求的回调函数,方便调试和用户反馈:

$.ajax({
  method: "POST",
  url: "http://localhost:3000/api/products",
  dataType: "json", // 修正type为dataType
  data: request,
  contentType: "application/json",
  success: function(response) {
    console.log("产品保存成功:", response);
    // 清空输入框,提升用户体验
    $('#name').val('');
    $('#price').val('');
    $('#quantity').val('');
    // 这里还可以重新请求数据刷新表格
  },
  error: function(xhr, status, err) {
    console.error("保存失败:", err);
  }
})

改完这两个核心问题后,应该就能正常把数据保存到MongoDB了。如果还有问题,可以再检查下MongoDB的连接状态,或者确认输入框里有没有填入有效值~

备注:内容来源于stack exchange,提问作者xttx

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.23 08:20:29