Question

Je voudrais obtenir des données qui sont transmises à partir d'une page à l'aide d'un formulaire et utiliser ces données dans la page qui est redirigée.

J'ai cette forme dans mon côté client.

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

et j'ai ce script dans mon serveur.

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

PLSS aide.

Était-ce utile?

La solution

Utilisation bodyParser.urlencoded() middleware:

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

Ensuite, les valeurs du formulaire seront sur req.body:

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

Réglage { extended: true } permet bodyParser d'accepter JSON comme les données dans les données de formulaire, y compris des objets imbriqués. par exemple. { person: { name: Adam } } envoyée en utilisant javascript plutôt que les paires de valeurs de nom qui d'envoi de formulaire HTML traditionnel. Si vous n'avez pas besoin que vous pouvez définir la valeur étendue à false. Ne pas définir une option étendue (à savoir l'aide d'un réglage par défaut) est apparemment dépréciée et ils semblent vouloir vous de décider si vous avez besoin d'options imbriquées ou paires de valeurs de nom ordinaire.

Si vous voulez être en mesure d'analyser les données de formulaire pour certaines routes et données JSON pour d'autres dans votre serveur express, vous pouvez utiliser:

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

urlencoded() pour x-www-form-urlencoded type de contenu

  • true - pour les structures de données imbriquées
  • false - paires de valeurs de nom

json() - pour le type de contenu application / JSON

On notera que la forme / multipartie a besoin d'un analyseur de masse différent (comme multer)

Autres conseils

Pour permettre d'exprimer les données de forme de poignée bien que vous devez vous assurer que vous avez bodyParser inclus comme ceci:

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

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

Ensuite, dans votre gestionnaire POST, vous pouvez accéder au corps de forme par la propriété Request.body comme ceci:

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

vous aurez également besoin d'utiliser un moteur de templating (comme Jade ) si vous avez l'intention à délivrer en sortie les données de formulaire dans la réponse.

Obsolète, réponse acceptée est la solution correcte

Si vous avez besoin des noms de variables d'accès à votre point de vue, vous devez utiliser la fonction res.render et passer la variable comme:

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

et en jade do

div!= name
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top