これが私の簡単なフォームです:
<form id="loginformA" action="userlogin" method="post">
<div>
<label for="email">Email: </label>
<input type="text" id="email" name="email"></input>
</div>
<input type="submit" value="Submit"></input>
</form>
これが私のエクスプレス/Node.js コード:
app.post('/userlogin', function(sReq, sRes){
var email = sReq.query.email.;
}
sReq.query.email
または、sReq.query['email']
などを試しましたがsReq.params['email']
、どれも機能しません。すべて が返されますundefined
。
Get 呼び出しに変更すると動作するので、何かアイデアはありますか?
ベストアンサー1
物事はかわったExpress 4.16.0を再度起動すると、Express 3.0と同じようにexpress.json()
と を使用できるようになります。express.urlencoded()
これは。。。でした違うExpress 4.0 から 4.15まで:
$ npm install --save body-parser
その後:
var bodyParser = require('body-parser')
app.use( bodyParser.json() ); // to support JSON-encoded bodies
app.use(bodyParser.urlencoded({ // to support URL-encoded bodies
extended: true
}));
残りはExpress 3.0と同様です。
まず、本文の投稿データを解析するためのミドルウェアを追加する必要があります。
次のコード行の 1 つまたは両方を追加します。
app.use(express.json()); // to support JSON-encoded bodies
app.use(express.urlencoded()); // to support URL-encoded bodies
次に、ハンドラーでreq.body
物体:
// assuming POST: name=foo&color=red <-- URL encoding
//
// or POST: {"name":"foo","color":"red"} <-- JSON encoding
app.post('/test-page', function(req, res) {
var name = req.body.name,
color = req.body.color;
// ...
});
の使用に注意してくださいexpress.bodyParser()
推奨されません。
app.use(express.bodyParser());
...は次と同等です:
app.use(express.json());
app.use(express.urlencoded());
app.use(express.multipart());
にはセキュリティ上の懸念があるためexpress.multipart()
、必要な特定のエンコードタイプのサポートを明示的に追加することをお勧めします。マルチパートエンコードが必要な場合(たとえばファイルのアップロードをサポートする場合)は、これを読む。