如何在NodeJS中解析表單元素數組?node.js表單元素數組
就像在PHP中,我們得到$_POST['answers']
與名稱的表單元素:answers[0], answers[1], answer[2] .... answers[n]
如何在NodeJS中解析表單元素數組?node.js表單元素數組
就像在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);
使用流行的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 -d foo=1 -d foo=2 localhost:3000/foo
與PHP類似,req.body.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);
});
});
退房formidable它可以解析任何形式的,你給它。它也是連接和表達用來解析表單數據的模塊。
理解的,任何方式做到這一點不明確?我不想更改應用程序結構。 – Dev 2012-03-28 12:26:02
我正在使用'querystring'模塊。 – Dev 2012-03-28 12:27:46
不幸的是,這個解決方案沒有解決多深度括號(即user [3] [name]) – cyberwombat 2012-09-02 21:29:10