node.js массив элементов формы - PullRequest
0 голосов
/ 28 марта 2012

Как разобрать массив элементов формы в NodeJS?

Как и в PHP, мы получаем $_POST['answers'] для элементов формы с именами: answers[0], answers[1], answer[2] .... answers[n]

Ответы [ 3 ]

1 голос
/ 29 марта 2012

У меня есть собственное решение для этого, например, я получаю данные в 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);
0 голосов
/ 28 марта 2012

Проверьте грозный он может проанализировать любую форму, которую вы даете. Это также модуль для подключения и экспресс-использования для анализа данных формы.

0 голосов
/ 28 марта 2012

Используя популярную среду 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 будет массивом со всеми опубликованными вами фоами.

Редактировать: Модуль querystring - это действительно то, что Express использует внутри. Если вам нужно принять загрузку файлов, используйте потрясающий, как предлагает Ян 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);
    });
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...