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

Node.js(Express)中如何获取POST请求参数并返回响应?

解决Express中无法获取JSON格式POST请求参数的问题

你遇到的问题核心是后端没有配置对应JSON请求体的解析中间件,而前端发送的是application/json类型的数据,导致Express无法解析请求体里的参数。下面是具体的解决方案:

步骤1:添加JSON解析中间件

你的后端目前只配置了bodyParser.urlencoded,它只能处理表单格式(application/x-www-form-urlencoded)的请求体。要解析JSON格式的请求,需要加上JSON解析中间件:

如果你的项目里已经安装了body-parser(从你的代码看已经用了),直接在urlencoded中间件下面添加:

var express = require('express');
var bodyParser = require('body-parser');
var app = express();

// 解析表单格式的请求体
app.use(bodyParser.urlencoded({ extended: true }));
// 新增:解析JSON格式的请求体
app.use(bodyParser.json());

// ... 其他路由代码

注:如果你的Express版本是4.16.0及以上,Express已经内置了bodyParser的功能,可以不用单独安装body-parser,直接替换成:

app.use(express.urlencoded({ extended: true }));
app.use(express.json());

步骤2:从req.body中获取参数

注意:POST请求的参数不是直接挂在req对象上的,而是存在req.body里。修改你的/putinto路由,正确获取并返回参数:

app.post('/putinto', function(req, res) {
  // 从req.body中取出id和title
  const { id, title } = req.body;
  // 将参数作为响应返回
  res.send({ 
    message: '参数获取成功',
    id: id,
    title: title 
  });
});

为什么去掉contentType: "application/json"就可以正常工作?

当你去掉这个配置后,jQuery会默认把data里的对象转换成表单格式(id=SomeId&title=SomeTitle),并且自动设置请求头为application/x-www-form-urlencoded,这正好匹配你后端配置的bodyParser.urlencoded中间件,所以能解析到参数。但这种情况下参数依然是存在req.body里,不是req.id哦。

现在你保留contentType: "application/json"的同时,后端配置好JSON解析中间件,就能正常获取JSON格式的请求参数了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 07:06:05