如何在Node.js中获得post (jquery)数组数据(使用express)

How to get POSTed (jquery) array data in Node.js (using express)

本文关键字:数组 jquery 数据 express 使用 post Node js      更新时间:2023-09-26

我试图张贴数组到我的服务器。但我很难把它做好。

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

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

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

谁能解释一下为什么会这样?如何解决我的错误,为什么我不能只是张贴姓名:姓名和简单的工作?

发送的数据不正确。您可以在开发工具中检查请求。您将看到如下内容:

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[]']); .

是的,您的req.body包含键names[],而不是names。所以你可以从req.body['names[]']中抓取或重写代码,使名称为object:

$.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);
});

注:可能您从GET查询中获取[]名称。POST不是这样的

:

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

首先安装body-parser:

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())