express express-parser中间件将数据放入属性名称中
我是nodeJS Express框架的新手。 我正在使用以下消息发送POST请求:
router.post('/', function(req, res) { var data = Object.getOwnPropertyNames(req.body)[0]; });
我通过以下方式从客户端发送了这些数据:
$.ajax({ url: "write_to_region", type: "POST", data: JSON.stringify(grid) });
其中“网格”是一个二维值的数组。 我的快车尸体parsing器configuration如下:
app.use(bodyParser.urlencoded({limit: '50mb', extended: false }));
什么是更好或更习惯的做法呢? 请注意,该数组有点大(10kb),只包含整数。 理想情况下,我会尽量减less请求中发送的数据量。 谢谢!!
问题是你没有设置适当的Content-Type
。 Jquery的POST
数据默认的Content-Type
是application/x-www-form-urlencoded
。 所以,身体分析器开始读取请求数据,寻找一个=
知道什么时候“键”结束和“价值”开始。 它从来没有find一个=
所以它不断附加到密钥名称。
要解决这个问题,你需要在你的$ajax()
configuration文件中添加这些选项:
contentType: "application/json; charset=utf-8", dataType: "json",
并添加bodyParser.json()
中间件:
app.use(bodyParser.json());