express如何获取post上来的数组??
发布于 12 年前 作者 by5739 18159 次浏览 最后一次编辑是 8 年前

请教…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 回复

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

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

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

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

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

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

如何解决的呢?

推荐你一个模块 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

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

那只有在数据上传上来之后,解析的时候增加if判断了,会影响性能的,我不想这么做

@by5739 请问如何解决的?

回到顶部