use*_*674 5 node.js express body-parser
运行Express API,我很难在点击POST路由时正确解析包括对象数组的数据.
代码的简化版本 -
var express = require('express');
var app = express();
var router = express.Router();
var bodyParser = require('body-parser');
var parseUrlencoded = bodyParser.urlencoded({ extended: false });
router.post('/', parseUrlencoded, function(req, res) {
console.log(req.body);
});
Run Code Online (Sandbox Code Playgroud)
点击API与以下内容
{ name: "Object name",
arrayOfObjects: [
{ name: "Sub Object Name", subType: "Sub Object Type" },
{ name: "Sub Object Name 2", subType: "Sub Object Type 2" }
]
}
Run Code Online (Sandbox Code Playgroud)
退出
{ name: "Object name",
'arrayOfObjects[0][name]': "Sub Object Name",
'arrayOfObjects[0][subType]': "Sub Object Type",
'arrayOfObjects[1][name]': "Sub Object Name 2",
'arrayOfObjects[1][subType]': "Sub Object Name",
}
Run Code Online (Sandbox Code Playgroud)
我希望将此作为数组接收,这是使用PUT请求时的情况.
我确信这可能使用bodyParser或类似的配置,但我很难找到一个好的解决方案.
Bha*_*san 14
好的,从你的问题我明白你想像json数组一样操作POST Body然后使用qs库 通过扩展 true
app.use(bodyParser.urlencoded({ extended: true }));
Run Code Online (Sandbox Code Playgroud)
您可以发送字符串而不是数组,并将extended选项保留为false。
从您前面的js:
var fruits = ["Banana", "Orange", "Apple", "Mango"];
$.ajax("/send", {
data: { "strArr": fruits.join() },
type: "POST",
async: true,
......
Run Code Online (Sandbox Code Playgroud)
从您的服务器js:
router.post('/send', function(req, res) {
var fruits = req.body.strArr.split(",");
console.log(fruits); // This is an array
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7361 次 |
| 最近记录: |