come ottenere i dati passati da una forma in veloce (Node.js)
-
25-10-2019 - |
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.
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 ??p>
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