2012-03-28 62 views
0

如何在NodeJS中解析表單元素數組?node.js表單元素數組

就像在PHP中,我們得到$_POST['answers']與名稱的表單元素:answers[0], answers[1], answer[2] .... answers[n]

回答

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); 
0

使用流行的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); 
    }); 
}); 
+0

理解的,任何方式做到這一點不明確?我不想更改應用程序結構。 – Dev 2012-03-28 12:26:02

+0

我正在使用'querystring'模塊。 – Dev 2012-03-28 12:27:46

+3

不幸的是,這個解決方案沒有解決多深度括號(即user [3] [name]) – cyberwombat 2012-09-02 21:29:10

0

退房formidable它可以解析任何形式的,你給它。它也是連接和表達用來解析表單數據的模塊。