Pregunta

Me gustaría obtener datos que se pasen de una página utilizando un formulario y usar esos datos en la página que se redirige.

Tengo este formulario en el lado de mi cliente.

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

Y tengo este script en mi servidor.

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

PLSS AYUDA.

¿Fue útil?

Solución

Usar bodyParser.urlencoded() Middleware:

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

Entonces los valores de formulario estarán en req.body:

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

Ajuste { extended: true } Permite que BodyParser acepte datos similares a JSON dentro de los datos del formulario, incluidos los objetos anidados. p.ej { person: { name: Adam } } enviado usando JavaScript en lugar de los pares de valor de nombre que envía HTML tradicional. Si no necesita que pueda establecer el valor extendido en falso. No definir una opción extendida (es decir, usar una configuración predeterminada) aparentemente está en desuso y parecen querer que decida si necesita opciones anidadas o pares de valor de nombre simple.

Si desea poder analizar datos de formularios para algunas rutas y datos JSON para otras en su servidor Express, puede usar:

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

urlencoded() para el tipo de contenido x-www-form-urlencoded

  • true - Para estructuras de datos anidadas
  • false - Para pares de valor de nombre

json() - para el tipo de contenido de aplicación/JSON

Tenga en cuenta que Form/multipart necesita un analizador de cuerpo diferente (como Multer)

Otros consejos

Para permitir que Express maneje bien los datos de formulario, debe asegurarse de tener bodyParser incluido así:

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

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

Luego, en su manejador de publicaciones, puede acceder al cuerpo de formulario a través del Request.body propiedad como así:

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

También necesitará usar un motor de plantilla (como Jade) Si tiene la intención de generar los datos del formulario en la respuesta.

Desapercibido, el respuesta aceptada es la solución correcta

Si necesita acceder a nombres de variables en sus vistas, debe usar el res.render función y pasar la variable como:

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

Y luego en Jade Do

div!= name
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top