質問

フォームを使用してページから渡されたデータを取得し、リダイレクトされたページのデータを使用したいと思います。

私はクライアント側にこのフォームを持っています。

    <form action="game" method="get">
                    <input type="text" name="name"/>
                    <input type="submit" />
    </form>

そして、私は私のサーバーにこのスクリプトを持っています。

app.get('/game',function(req,res){
res.sendfile(__dirname + '/game.html'); 
});

PLSSが役立ちます。

役に立ちましたか?

解決

使用する bodyParser.urlencoded()ミドルウェア:

const bodyParser = require('body-parser');
app.use(bodyParser.urlencoded({ extended: true }));

その後、フォーム値はreq.bodyになります:

app.post('/game', function (req, res) {
    res.render('the_template', { name: req.body.name });
});

設定 { extended: true } BodyParserは、ネストされたオブジェクトを含むフォームデータ内のJSONのようなデータを受け入れることができます。例えば { person: { name: Adam } } 従来のHTMLフォームが送信する名前のペアではなく、JavaScriptを使用して送信されます。それを必要としない場合は、拡張値をfalseに設定できます。拡張オプションを定義しない(つまり、デフォルト設定を使用する)は明らかに非推奨であり、ネストされたオプションとプレーン名値ペアが必要かどうかを決定してほしいと思われます。

Expressサーバーの一部のルートおよびJSONデータのフォームデータを解析できるようにしたい場合は、以下を使用できます。

app.use(bodyParser.json())
app.use(bodyParser.urlencoded({ extended: <true|false> }))

urlencoded() x-www-form-urlencodedコンテンツタイプの場合

  • true - ネストされたデータ構造用
  • false - 名前値ペアの場合

json() - アプリケーション/JSONコンテンツタイプ用

フォーム/マルチパートには別のボディパーサー(マルターなど)が必要であることに注意してください

他のヒント

Expressがフォームデータをうまく処理できるようにするには、あなたが確実に持っていることを確認する必要があります bodyParser そのようなものが含まれています:

var express = require('express'),
    app = express.createServer();

app.use(express.bodyParser());
//the rest of your configuration

次に、ポストハンドラーでは、フォームボディにアクセスできます。 Request.body SOのようなプロパティ:

app.post('/game', function (req, res) {
    res.render('some-file', { name: req.body.name });
});

また、テンプレートエンジンを使用する必要があります( ジェイド)応答内のフォームデータを出力することを意図している場合。

非推奨、 受け入れられた答え 正しいソリューションです

ビューで変数名にアクセスする必要がある場合は、 res.render 機能し、次のような変数を渡します。

res.render('game', {
    name: req.body.name
}

そして、ジェイドでは

div!= name
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top