首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在POSTed (jquery) Node.js中获取数组数据(使用express)

如何在POSTed (jquery) Node.js中获取数组数据(使用express)
EN

Stack Overflow用户
提问于 2015-05-15 12:38:00
回答 2查看 5.7K关注 0票数 3

我正在尝试将一个数组发送到我的服务器。但我做得不好。

我试图发布的数组是一个动态构造的对象数组,因此我不知道它的长度。

更准确地说,我的数组是形式的。

代码语言:javascript
复制
var names =[{id:1, name:"nick"},{id:2,name:"bob"},{id:3,name:"john"}.....{id:n, name:"whatever"}]

我是使用jquery发布的:

代码语言:javascript
复制
$.post("save_names", {
        'names[]': names
    }, function(results) {
        alert(results);
    }); 

我的节点代码如下:(我使用stormpath-express)

代码语言:javascript
复制
app.post('/save_names', config.access_group, function(req, res) {
    console.log("body ", req.body);
});

通过这种方式,我可以从console.log获得以下信息

代码语言:javascript
复制
body  { 'names[]': [ '[object Object]', '[object Object]', '[object Object]' ] }

当我试图打印数组:console.log("body ", req.body.names);时,我得到了body undefined

有人能解释一下为什么会发生这种事吗?如何解决我的错误,为什么我不能只是张贴名称:名称和简单的工作?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-05-15 13:07:21

你把数据发错了。您可以在开发工具中检查请求。你会看到这样的东西:

代码语言:javascript
复制
Form Data
    names[]:[object Object]
    names[]:[object Object]
    names[]:[object Object]
    names[]:[object Object]

尝试自己将数据转换为JSON:

代码语言:javascript
复制
$.post("save_names", {
        'names[]': JSON.stringify(names)
    }, function(results) {
        alert(results);
    });

不要忘记正确地访问数组:console.log("body ", req.body['names[]']);

票数 4
EN

Stack Overflow用户

发布于 2015-05-15 12:40:25

是的,您的req.body包含键names[],而不是names。因此,您可以从req.body['names[]']抓取或重写代码以获得名称对象:

代码语言:javascript
复制
$.post("save_names", {
        names: names
    }, function(results) {
        alert(results);
    }); 

以及表达代码:

代码语言:javascript
复制
app.post('/alter_offer_sort', config.access_group, function(req, res) {
    console.log("body ", req.body.names);
});

P.S.可能会从GET查询中获取[]名称。这不是POST的工作方式。

更新

我也没有注意到,只有字符串的对象,所以初始化bodyParser。

第一次安装主体解析器:

代码语言:javascript
复制
npm install --save body-parser

然后修改代码如下:

代码语言:javascript
复制
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())
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30259744

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档