J'ai ce formulaire chez mon client.
<form action="game" method="get">
<input type="text" name="name"/>
<input type="submit" />
</form>
et j'ai ce script sur mon serveur.
app.get('/game',function(req,res){
res.sendfile(__dirname + '/game.html');
});
aide plss.
Utilisez le middleware bodyParser.urlencoded(
):
const bodyParser = require('body-parser');
app.use(bodyParser.urlencoded({ extended: true }));
Ensuite, les valeurs de formulaire seront sur req.body:
app.post('/game', function (req, res) {
res.render('the_template', { name: req.body.name });
});
La définition de { extended: true }
Permet à bodyParser d’accepter des données de type json dans les données de formulaire, y compris les objets imbriqués. par exemple. { person: { name: Adam } }
Envoyé à l'aide de javascript plutôt que des paires nom-valeur envoyées par le formulaire HTML traditionnel. Si vous n'en avez pas besoin, vous pouvez définir la valeur étendue sur false. Ne pas définir une option étendue (c'est-à-dire utiliser un paramètre par défaut) est apparemment obsolète et semble vouloir que vous décidiez si vous avez besoin d'options imbriquées ou de paires nom/valeur.
Si vous souhaitez pouvoir analyser les données de formulaire de certains itinéraires et les données JSON d'autres sur votre serveur express, vous pouvez utiliser:
app.use(bodyParser.json())
app.use(bodyParser.urlencoded({ extended: <true|false> }))
urlencoded()
pour le type de contenu x-www-form-urlencoded
true
- pour les structures de données imbriquéesfalse
- pour les paires nom-valeurjson()
- pour le type de contenu application/json
Notez que formulaire/multipart nécessite un analyseur de corps différent (tel que multer)
Pour permettre à express de gérer correctement les données de formulaire, vous devez vous assurer que vous avez bodyParser
inclus comme suit:
var express = require('express'), app = express.createServer(); app.use(express.bodyParser()); //the rest of your configuration
Ensuite, dans votre POST gestionnaire, vous pouvez accéder au corps du formulaire par le biais du Request.body
bien comme ça:
app.post('/game', function (req, res) { res.render('some-file', { name: req.body.name }); });
Vous devrez également utiliser un moteur de création de modèles (tel que Jade ) si vous souhaitez générer les données de formulaire dans la réponse.
Obsolète, le réponse acceptée est la bonne solution
Si vous devez accéder aux noms de variable dans vos vues, vous devez utiliser la fonction res.render et transmettre la variable comme suit.
res.render('game', {
name: req.body.name
}
puis en jade faire
div!= name