express主体解析器中间件将数据放入属性名称中
express body-parser middleware puts data into the property name
我是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"是值的2d数组。我的express body解析器配置如下:
app.use(bodyParser.urlencoded({limit: '50mb', extended: false }));
做这件事的更好或更惯用的方法是什么?请注意,数组有点大(10kb),并且只包含整数。理想情况下,我会尽量减少请求中发送的数据量。谢谢
问题是您没有设置适当的Content-Type
。Jquery对于POST
ing数据的默认Content-Type
是application/x-www-form-urlencoded
。因此,主体解析器开始读取请求数据,寻找=
来知道"键"何时结束,"值"何时开始。它永远找不到=
,所以它一直附加到密钥名称。
要解决此问题,您需要在$ajax()
配置中添加以下选项:
contentType: "application/json; charset=utf-8",
dataType: "json",
并添加bodyParser.json()
中间件:
app.use(bodyParser.json());
相关文章:
- 鼠标悬停的属性数据是什么
- 正在代码隐藏中检索选定ListBox项的属性数据
- 使用 Javascript 编写引用属性数据的 HTML
- 将脚本属性(数据变量)传递到 head.js
- AngularJS 2 - 内部属性数据绑定 - 异常:类型错误:无法读取未定义的属性
- 如何在不更改属性数据类型的情况下推送对象数组
- JS函数:无法读取未定义的属性“数据集”
- 无法获取属性“数据表”的值:对象为空或未定义
- Popover自定义属性数据的动态更新问题
- IE11为具有ng属性数据的对象添加斜切边界
- 通过onclick事件将值属性数据从HTML端传递给JavaScript函数
- 如何删除具有<输入>属性数据被分配为id=“0”;183〃;在jquery中
- 聚合物,在构造函数中使用属性数据绑定
- 我如何才能将属性数据转换为小写仅使用JavaScript
- 访问JS属性-数据.Att vs. data["attr"]
- jquery可拖动停止可以停止对象属性数据-*
- JavaScript中的不确定图像属性数据
- AngularJS访问JSON数组[n].属性数据
- React Native错误:可能未处理的承诺拒绝-无法读取属性数据
- 帮助将DIV中的属性数据排序捕获为数组?Jquery/Javascript