2

我是 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)
});

其中“grid”是一个二维值数组。我的 express body 解析器配置如下:

app.use(bodyParser.urlencoded({limit: '50mb', extended: false }));

有什么更好或更惯用的方法来做到这一点?请注意,该数组有点大(10kb)并且只包含整数。理想情况下,我会尽量减少请求中发送的数据量。谢谢!!

4

1 回答 1

1

问题是您没有设置适当的Content-Type. Jquery 的默认Content-Type数据POSTapplication/x-www-form-urlencoded. 所以主体解析器开始读取请求数据,寻找一个=知道“键”何时结束和“值”开始的时间。它永远找不到,=所以它一直附加到键名。

要解决此问题,您需要在$ajax()配置中添加这些选项:

contentType: "application/json; charset=utf-8",
dataType: "json",

并添加bodyParser.json()中间件:

app.use(bodyParser.json());
于 2014-10-30T22:20:41.767 回答