- Express.js: 4.13.4
- body-parser: 1.13.3
以下の様なフォームで、text
という名前のデータを配列で送信したい。
<!DOCTYPE html>
<title>テスト</title>
<form method="post" action="/form">
<label>テキスト1:
<input type="text" name="text[]" value="text1">
</label>
<label>テキスト2:
<input type="text" name="text[]" value="text2">
</label>
<input type="submit" value="送信">
</form>
express-generatorでExpress.jsアプリケーションの雛形を作ると、フォームのボディをパースするミドルウェアとしてbody-parser
が使われるが、デフォルトでは
app.use(bodyParser.urlencoded({ extended: false }));
となっている。ここを、
app.use(bodyParser.urlencoded({ extended: true }));
としてあげと、req.body.text
が配列になる。以下の様にreq.body.text
を返すようにしてあげると、
router.post('/form', function(req, res, next) {
res.json({ texts: req.body.text });
});
以下のようなJSONがクライアントに返される。
{"texts":["text1","text2"]}