cómo obtener los datos que pasan de una forma de Expresar (Node.js)

Me gustaría obtener datos que son transmitidos de una página con un formulario y el uso de los datos en la página a la que se redirige.

Tengo este formulario en mi lado del 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.

  • Hay una razón que usted está usando method='get' en lugar de POST?

3 Kommentare

  1. 50

    Uso bodyParser.urlencoded() middleware:

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

    A continuación, los valores del formulario será en req.cuerpo:

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

    Configuración { extended: true } permite la bodyParser a aceptar json como los datos dentro de los datos del formulario, incluyendo objetos anidados. por ejemplo, { person: { name: Adam } } enviado el uso de javascript en lugar de los pares de nombre y valor que HTML tradicional forma de envío. Si usted no necesita que usted puede establecer el valor extendido a false. No definir una extensa opción (es decir, con un ajuste predeterminado) es aparentemente obsoleto y que parece que quieren que usted para decidir si usted necesita opciones anidadas o llanura de pares de nombre y valor.

    Si quieres ser capaz de analizar los datos del formulario para algunas rutas y de datos json para otros en tu server express, puede utilizar:

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

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

    • true – anidados estructuras de datos
    • false – para los pares de nombre y valor

    json() – para application/json tipo de contenido

    Tenga en cuenta que la forma/multipart necesidades de un cuerpo diferente parser (tales como multer)

  2. 34

    Para permitir express para manejar los datos de un formulario muy bien que usted necesita para asegurarse de que tiene bodyParser incluido manera:

    var express = require('express'),
        app = express.createServer();
    
    app.use(express.bodyParser());
    //the rest of your configuration

    A continuación, en tu POST controlador puede acceder a la forma del cuerpo a través de la Request.body propiedad así:

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

    También tendrá que usar un motor de plantillas (como Jade) si pretendes salida de los datos del formulario en la respuesta.


    Obsoleta, en el aceptado respuesta es la solución correcta

    • ¿cómo puedo acceder a los datos del cliente si por ejemplo tengo jade?
    • ¿cómo puedo obtener el nombre de la variable?
    • Esta solución es la correcta para POST, pero usted tiene GET en cuestión. Si cambia de eso, usted puede tener acceso a name en req.body.name como @Slace tiene en su respuesta.
    • sí He cambiado el post y ya tengo trabajo. pero mi problema es ¿cómo puedo acceder en mi nombre game.html?
    • Esto ha sido cambiado a: var express = require('express'); var bodyParser = require('body-parser'); var app = express(); app.use(bodyParser.json());
    • No es cierto~ a analizar los datos de formulario, usted necesitará bodyParser.urlencoded()

  3. 1

    Si usted necesita para acceder a los nombres de las variables en su opinión, debe utilizar el res.render función y pasar la variable como:

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

    y, a continuación, en jade hacer

    div!= name
    • qué necesito para utilizar jade?
    • u puede utilizar ejs demasiado, si quieres u. o tal vez leer el archivo html y reemplazar el marcador de posición para el nombre de

Kommentieren Sie den Artikel

Bitte geben Sie Ihren Kommentar ein!
Bitte geben Sie hier Ihren Namen ein

Pruebas en línea