2

我想找到一些现有的中间件或一些方便的代码来将带有方括号的表单字段(即'contact[21][name]')转换为 ExpressJS 3 的真实数组。

类似于以下内容:

for(key in req.body){
    if(key.isArrayField()) {
       //add new array field to req.body and delete old string version from req.body
...

我想解析无限深度的括号。我还在学习 JS/Node,所以会喜欢一些方向。

谢谢

4

3 回答 3

4

您能否澄清一下您要通过此实现的目标?

根据您首先从 Web 表单获取输入的方式,您可以使用内置于 node.js 中的JSON.parse()(此处的文档)轻松地将 JSON 语法解析为真实对象(包括数组)

使用该方法,您可以拥有无​​限级别的嵌套值(散列/对象和数组),但您需要一些客户端脚本首先将值放在那里(例如jQuery )。

如果你给出一个更完整的例子,包括提交表单的上下文,我可能会给出更好的方向......

于 2012-10-14T08:46:27.900 回答
3

根据我的经验,你可以简单地做这样的事情......

input(type="text" name="foo[]" value="foo1")
input(type="text" name="foo[]" value="foo2")

JS

app.post('/test', function(req,res){
    console.log(req.body)// { foo: [ 'foo1', 'foo2' ] }
    console.log(req.body.foo)//["foo1","foo2"]
    console.log(req.body.foo[0])//foo1
    console.log(req.body.foo[1])//foo2
});

我不知道这是否有意义,但这就是你对待他们的方式……至少在 express 3.0+ 上

于 2013-12-19T14:25:01.223 回答
1

我已经通过使用https://github.com/marioizquierdo/jquery.serializeJSON解决了​​这个问题 - 问题是/是如果我只是提交一个 POST 表单来表达它不会将括号作为数组处理,所以他们有手动正则表达式。通过使用插件将表单解析为 JSON,我可以通过 ajax 提交它。

于 2012-10-16T12:42:00.193 回答