CNode

express如何获取post上来的数组??

Bby5739发布于14 年前最后回复11 年前11 回复18885 浏览0 收藏

请教..express...如何处理post上来的数组, 例如: a[0].id=123 a[0].name=abc a[1].id=234 a[1].name=cdf

我从req.body.a监控看到只能得到以下数据 0].id=12 0].name=ab 1].id=23 1].name=cd

貌似是把第一个中括号和最后一个字符去掉了...我估摸着它是不是把我提交的数据当成a[name]=xx,a[id]=xx来处理了...这样的话..req.body.a.name和req.body.a.id是可以取出来的

查看回复

回复 (11)

B
by5739#1·14 年前

用formidable得到如下数据: fields: { 'title[0].id': '111', 'title[1].id': '222' } 为什么不是:{title : [{id:'111'}, {id:'222'}]}...看来用重写bodyParse()啊

W
wppept#2·14 年前

post的时候编码就不对吧,得做成字符串格式。前端编码+服务器端解码,这是基本的道理吧。

H
huangdh3#3·14 年前

给你看个例子看下对你是不是有帮助

        $.post("/index?c=login",{v :{"username":"test", "password":"test"}}, function(data){
        if(data.code == 0){
            window.location.href="/index?c=toMainPage";
        } else {
            console.log(data.msg);
        }
    });

获取的方法:

var loginJson = req.body.v;
H
huangdh3#4·14 年前

你不需要post数组,可以把数组转化为json数据,然后post过去~那样就ok啦!

B
by5739#5·14 年前

已经解决..数组是没问题的...@huangdh3说的是没问题..但是有时候我想直接form提交上去了..是个数组的形式..里面有对象这样的...

D
DoubleSpout#8·14 年前

推荐你一个模块 qs,也是tj写的,tj就是通过这个模块在expressjs框架中处理类似情况的。可以用这个模块来代替api中的 querystring.parse() 方法。 还有种需求就是客户端发送

user.face=aaa
user.name=bbb

需要解析为

{user:
{
face:aaa, 
name:bbb
}
}

qs模块式无法胜任了,只能自己写了,参考: https://github.com/DoubleSpout/rrestjs/blob/master/lib/RestReqParam.js

A
a272121742#9·14 年前

对头,老吴 @snoopy 以前的框架rrestjs没有这个模块,自从有了这个模块,前台传对象,后台得到的也是对象,唯一一个很麻烦的就是会结构的确不会变,但是类型都会变成字符串,老吴你看有没有办法能除了保持对象的结构不变,还能保证数据类型一致性呢?

C
cuoluanleshiguang#11·11 年前

@by5739 请问如何解决的?

参与回复
登录后即可参与回复。登录