【问题标题】:express body-parser middleware puts data into the property nameexpress body-parser 中间件将数据放入属性名中
【发布时间】:2014-12-27 02:27:03
【问题描述】:

我是 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)并且只包含整数。理想情况下,我会尽量减少请求中发送的数据量。 谢谢!!

【问题讨论】:

    标签: javascript node.js express body-parser


    【解决方案1】:

    问题是您没有设置适当的Content-Type。 Jquery 对于POSTing 数据的默认Content-Typeapplication/x-www-form-urlencoded。所以body解析器开始读取请求数据,寻找=来知道“key”何时结束,“value”何时开始。它永远不会找到=,因此它会一直附加到键名。

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

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

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

    app.use(bodyParser.json());
    

    【讨论】:

    • 谢谢你,成功了。我最初尝试过contentType: "application/json",但遇到了我现在意识到的是this
    猜你喜欢
    • 1970-01-01
    • 2023-03-08
    • 1970-01-01
    • 2018-08-01
    • 2019-09-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多