我正在尝试将一个数组发送到我的服务器。但我做得不好。
我试图发布的数组是一个动态构造的对象数组,因此我不知道它的长度。
更准确地说,我的数组是形式的。
var names =[{id:1, name:"nick"},{id:2,name:"bob"},{id:3,name:"john"}.....{id:n, name:"whatever"}]我是使用jquery发布的:
$.post("save_names", {
'names[]': names
}, function(results) {
alert(results);
}); 我的节点代码如下:(我使用stormpath-express)
app.post('/save_names', config.access_group, function(req, res) {
console.log("body ", req.body);
});通过这种方式,我可以从console.log获得以下信息
body { 'names[]': [ '[object Object]', '[object Object]', '[object Object]' ] }当我试图打印数组:console.log("body ", req.body.names);时,我得到了body undefined
有人能解释一下为什么会发生这种事吗?如何解决我的错误,为什么我不能只是张贴名称:名称和简单的工作?
发布于 2015-05-15 13:07:21
你把数据发错了。您可以在开发工具中检查请求。你会看到这样的东西:
Form Data
names[]:[object Object]
names[]:[object Object]
names[]:[object Object]
names[]:[object Object]尝试自己将数据转换为JSON:
$.post("save_names", {
'names[]': JSON.stringify(names)
}, function(results) {
alert(results);
});不要忘记正确地访问数组:console.log("body ", req.body['names[]']);。
发布于 2015-05-15 12:40:25
是的,您的req.body包含键names[],而不是names。因此,您可以从req.body['names[]']抓取或重写代码以获得名称对象:
$.post("save_names", {
names: names
}, function(results) {
alert(results);
}); 以及表达代码:
app.post('/alter_offer_sort', config.access_group, function(req, res) {
console.log("body ", req.body.names);
});P.S.可能会从GET查询中获取[]名称。这不是POST的工作方式。
更新
我也没有注意到,只有字符串的对象,所以初始化bodyParser。
第一次安装主体解析器:
npm install --save body-parser然后修改代码如下:
var express = require('express')
var bodyParser = require('body-parser')
var app = express()
// parse application/x-www-form-urlencoded
app.use(bodyParser.urlencoded({ extended: false }))
// parse application/json
app.use(bodyParser.json())https://stackoverflow.com/questions/30259744
复制相似问题