Cómo acceder a los campos del formulario POST en Express

4 minutos de lectura

avatar de usuario
murvinlai

Aquí está mi formulario simple:

<form id="loginformA" action="userlogin" method="post">
    <div>
        <label for="email">Email: </label>
        <input type="text" id="email" name="email"></input>
    </div>
<input type="submit" value="Submit"></input>
</form>

Aquí está mi Express.js/Node.js código:

app.post('/userlogin', function(sReq, sRes){    
    var email = sReq.query.email.;   
}

Lo intenté sReq.query.email o sReq.query['email'] o sReq.params['email'], etc. Ninguno de ellos funciona. todos regresan undefined.

Cuando cambio a una llamada Get, funciona, así que… ¿alguna idea?

  • SEGURIDAD: todo el mundo usando bodyParser() de las respuestas aquí también debería leer la respuesta de @SeanLynch a continuación

    – FelipeAls

    24 de noviembre de 2013 a las 20:06


avatar de usuario
anteamor

expreso v4.17.0

app.use(express.urlencoded( {extended: true} ))

app.post('/userlogin', (req, res) => {    

   console.log(req.body) // object

   var email = req.body.email;

}

express.urlencoded

Formulario de demostración

Otra respuesta relacionada

  • ¿Cuál es el propósito de establecer extendido a verdadero? ¿Qué significa eso?

    – klewis

    13 de marzo de 2021 a las 1:48

  • Esta opción permite elegir entre analizar los datos codificados en URL con la biblioteca de cadenas de consulta (cuando es falsa) o la biblioteca qs (cuando es verdadera). La sintaxis “extendida” permite codificar matrices y objetos enriquecidos en formato de codificación URL, lo que permite una experiencia similar a JSON con codificación URL.

    – anteamor

    22 abr a las 8:27

  • ¡Esto fue muy exitoso para mí! Él app.use(express.urlencoded({ extended: true })) no funcionaba en mi caso, así que no pude obtener los datos del cuerpo. ¡Gracias!

    – Edgar Magallón

    24 de abril a las 2:22


Dada alguna forma:

<form action='/somepath' method='post'>
   <input type="text" name="name"></input>
</form>

Usando expreso

app.post('/somepath', function(req, res) {

    console.log(JSON.stringify(req.body));

    console.log('req.body.name', req.body['name']);
});

Producción:

{"name":"x","description":"x"}
req.param.name x

  • no funcionó para mí necesita usar app.use(express.bodyParser());

    – cawecoy

    22 de junio de 2013 a las 23:19

  • @cawecoy absolutamente correcto aquí pero express.bodyParser () no funciona tan bien para mí, está obsoleto

    – Mohammad Faizan khan

    29 de octubre de 2014 a las 6:10


  • @MohammadFaizankhan fue un trabajo experimental, ya no usé express, no puedo ayudar ahora. Google para funciones similares a express.bodyParser(). ¡buena suerte!

    – cawecoy

    31/10/2014 a las 21:43


  • Esto funciona solo si está utilizando body-parser

    – Germán Acosta

    18 de marzo a las 2:48

avatar de usuario
Shivam Jha

Actualizar

A partir de Express version 4.16+su propia implementación de analizador de cuerpo ahora se incluye en el paquete Express predeterminado, por lo que no es necesario que descargue otra dependencia.

Es posible que haya agregado una línea a su código similar a la siguiente:

app.use(bodyparser.json()); //utilizes the body-parser package

Si está utilizando Express 4.16+, ahora puede reemplazar esa línea con:

app.use(express.json()); //Used to parse JSON bodies

Esto no debería introducir ningún cambio importante en sus aplicaciones, ya que el código de express.json() se basa en bodyparser.json().

Si también tiene el siguiente código en su entorno:

app.use(bodyParser.urlencoded({extended: true}));

Puedes reemplazar eso con:

app.use(express.urlencoded()); //Parse URL-encoded bodies

Una nota final de precaución: todavía hay algunos casos muy específicos en los que body-parser todavía podría ser necesario, pero en su mayor parte ExpressLa implementación de body-parser es todo lo que necesitará para la mayoría de los casos de uso.

(Consulte los documentos en expressjs/parser corporal para más detalles).

  • no funcionó para mí necesita usar app.use(express.bodyParser());

    – cawecoy

    22 de junio de 2013 a las 23:19

  • @cawecoy absolutamente correcto aquí pero express.bodyParser () no funciona tan bien para mí, está obsoleto

    – Mohammad Faizan khan

    29 de octubre de 2014 a las 6:10


  • @MohammadFaizankhan fue un trabajo experimental, ya no usé express, no puedo ayudar ahora. Google para funciones similares a express.bodyParser(). ¡buena suerte!

    – cawecoy

    31/10/2014 a las 21:43


  • Esto funciona solo si está utilizando body-parser

    – Germán Acosta

    18 de marzo a las 2:48

avatar de usuario
AYUDA

desde oficial versión 4 del documento

const express = require('express')
const app = express()
app.use(express.json());
app.use(express.urlencoded({ extended: true })) 

app.post('/push/send', (request, response) => {
  console.log(request.body)
})

¿Ha sido útil esta solución?

Esta web utiliza cookies propias y de terceros para su correcto funcionamiento y para fines analíticos y para mostrarte publicidad relacionada con sus preferencias en base a un perfil elaborado a partir de tus hábitos de navegación. Al hacer clic en el botón Aceptar, acepta el uso de estas tecnologías y el procesamiento de tus datos para estos propósitos. Configurar y más información
Privacidad