Domanda

Vorrei ottenere i dati che sono passati da una pagina utilizzando un modulo e l'uso che i dati nella pagina che viene reindirizzati.

Ho questo modulo nel mio lato client.

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

E non ho questo script in mio assistente.

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

aiuto plss.

È stato utile?

Soluzione

Usa bodyParser.urlencoded() middleware:

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

Poi i valori del form saranno req.body:

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

Impostazione { extended: true } permette al bodyParser di accettare JSON come i dati all'interno dei dati forma, ivi compresi gli oggetti nidificati. per esempio. { person: { name: Adam } } inviata utilizzando JavaScript piuttosto che le coppie di valori nome che tradizionale modulo HTML invio. Se non è necessario che si può impostare il valore esteso su false. Non definire un'opzione estesa (vale a dire utilizzando un'impostazione di default) è apparentemente deprecato e sembrano voler voi decidere se avete bisogno di opzioni nidificate o coppie di valori nome di pianura.

Se si vuole essere in grado di analizzare i dati dei moduli per alcuni percorsi e dati JSON per gli altri nella vostra Server Express, è possibile utilizzare:

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

urlencoded() per tipo di contenuto x-www-form-urlencoded

  • true - per strutture di dati nidificate
  • false - per coppie di valori nome

json() - per tipo di contenuto application / json

Si noti che forma / multipart bisogno di una diversa parser corpo (come multer)

Altri suggerimenti

Per consentire esprimere ai dati del modulo maniglia bene è necessario assicurarsi di avere bodyParser incluso in questo modo:

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

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

Poi, nel tuo gestore POST è possibile accedere al corpo della forma tramite la proprietà Request.body in questo modo:

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

Inoltre avrete bisogno di utilizzare un motore di template (come Jade ) se avete intenzione per emettere i dati di modulo nella risposta.

Deprecato, il accettato risposta è la soluzione corretta

Se avete bisogno di accedere nomi delle variabili in vostro punto di vista, è necessario utilizzare la funzione res.render e passare la variabile come:

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

e poi in giada do

div!= name
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top