1. ホーム
  2. javascript

[解決済み] POSTフォームのフィールドにアクセスする方法

2022-03-22 15:04:38

質問

以下は、私の簡単なフォームです。

<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>

以下は私の Express.js /Node.jsのコードです。

app.post('/userlogin', function(sReq, sRes){    
    var email = sReq.query.email.;   
}

試してみた sReq.query.email または sReq.query['email'] または sReq.params['email'] など。どれもうまくいきません。これらはすべて undefined .

Get呼び出しに変更すると、うまくいくのですが・・・何か思い当たることはありますか?

解決方法は?

物には 変更 再びスタート エクスプレス4.16.0 を使用することができるようになりました。 express.json()express.urlencoded() と同じように エクスプレス3.0 .

これは 異なる 開始 エクスプレス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
})); 

のように、残りは エクスプレス3.0 :

まず、bodyのpostデータをパースするためのミドルウェアを追加する必要があります。

以下のコードの1行または2行を追加します。

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() そのため、必要な特定のエンコーディングのサポートを明示的に追加する方がよいでしょう。もしマルチパートエンコーディングが必要なら (例えばファイルのアップロードをサポートするため) これを読む .