【发布时间】:2012-03-29 16:46:00
【问题描述】:
如何在 NodeJS 中解析表单元素数组?
就像在 PHP 中一样,我们得到 $_POST['answers'] 用于具有名称的表单元素:answers[0], answers[1], answer[2] .... answers[n]
【问题讨论】:
如何在 NodeJS 中解析表单元素数组?
就像在 PHP 中一样,我们得到 $_POST['answers'] 用于具有名称的表单元素:answers[0], answers[1], answer[2] .... answers[n]
【问题讨论】:
对此我有自己的解决方案,例如我在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);
【讨论】:
查看formidable,它可以解析您提供的任何形式。也是连接和表达用于解析表单数据的模块。
【讨论】:
使用流行的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);
});
});
【讨论】: