【问题标题】:Expressjs - parsing form array/bracket fields to real arraysExpressjs - 将表单数组/括号字段解析为真实数组
【发布时间】:2013-12-19 22:25:01
【问题描述】:

我想找到一些现有的中间件或一些方便的代码来将带有方括号的表单字段(即'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,所以会喜欢一些方向。

谢谢

【问题讨论】:

    标签: javascript node.js express


    【解决方案1】:

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

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

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

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

    【讨论】:

    • 解决了。我将在下面添加我的答案,尽管我仍然想知道一个可以从 express 解析 POST 表单并处理括号符号的中间件。
    【解决方案2】:

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

    翡翠

    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+ 上

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        猜你喜欢
        • 2019-10-23
        • 1970-01-01
        • 2019-03-22
        • 2016-09-24
        • 2011-05-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-04-24
        相关资源
        最近更新 更多