【问题标题】:node.js form elements arraynode.js 表单元素数组
【发布时间】:2012-03-29 16:46:00
【问题描述】:

如何在 NodeJS 中解析表单元素数组?

就像在 PHP 中一样,我们得到 $_POST['answers'] 用于具有名称的表单元素:answers[0], answers[1], answer[2] .... answers[n]

【问题讨论】:

    标签: arrays node.js post


    【解决方案1】:

    对此我有自己的解决方案,例如我在var obj 中获取数据:

    console.log("\n\n\n\n\n\n\n\n\n");
    
    var obj = { 
        'answer[\'test\']': 'first',
        'answer[\'2\']': 'second' 
    };
    
    var new_obj = {};
    for(key in obj){
        key.replace(/([^\[]+)\['([^\]]+)'\]/g, function($0, $1, $2){
                new_obj[$1] = new_obj[$1] || {};
            new_obj[$1][$2] = obj[key];
        })
    }
    
    console.log(new_obj);
    

    【讨论】:

      【解决方案2】:

      查看formidable,它可以解析您提供的任何形式。也是连接和表达用于解析表单数据的模块。

      【讨论】:

        【解决方案3】:

        使用流行的node.js框架Express,就这么简单:

        var express = require('express'),
            app = express.createServer();
        
        app.use(express.bodyParser());
        
        app.post('/foo', function(req, res, next) {
            // Echo the POST body
            res.send(req.body);
        });
        
        app.listen(3000);
        

        使用 curl 进行测试:

        curl -d foo=1 -d foo=2 localhost:3000/foo
        

        类似于 PHP,req.body.foo 将是一个包含您发布的所有 foo 的数组。

        编辑: querystring 模块确实是 Express 内部使用的。如果您需要接受文件上传,请按照 Jan Jongboom 的建议使用强大的。否则,这基本上是你将如何使用节点:

        var http = require('http'),
            qs = require('querystring');
        
        var app = http.createServer(function(req, res) {
            var buffer = '';
            req.setEncoding('utf-8');
            req.on('data', function(data) {
                buffer += data;
            });
            req.on('end', function() {
                var body = qs.parse(buffer);
            });
        });
        

        【讨论】:

        • 赞赏,有什么方法可以在没有快递的情况下做到这一点?我不想更改应用结构。
        • 我正在使用'querystring'模块。
        • 不幸的是,这个解决方案没有解决多深度括号(即用户[3][名称])
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-07-14
        • 1970-01-01
        • 1970-01-01
        • 2023-03-20
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多