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
相关产品推荐
相关产品推荐

