Nodo -v v10.15.0

Tengo varios formularios estándar en una página cargados a través de AJAX (así que no sé cuántos ni de dónde). Cada uno tiene un nombre de formulario.

Quiero obtener los atributos del formulario pero no se devuelven en la variable req.body.

En el siguiente ejemplo, quiero acceder al nombre del formulario como form1. He mirado el objeto req pero no puedo encontrar una descripción del formulario que se ha enviado.

¿Cómo puedo obtener los atributos del formulario, como el nombre, el método y la acción? ¿Tengo que hacer algo con el analizador corporal integrado?

Ejemplo es:

<form method='post' name='form1'>
       <input type='submit'>
</form>

En el lado expreso del nodo tengo lo siguiente:

app.post('/', function(req, res, next)
{
    console.log(req.body);
    process.exit(1);
});

La consola muestra {}

No creo que esta sea una pregunta repetida. Pasé una hora más o menos buscando esta respuesta.

0
Daz 4 oct. 2019 a las 08:05

1 respuesta

La mejor respuesta

¿Cómo puedo obtener los atributos del formulario, como el nombre, el método y la acción? ¿Tengo que hacer algo con el analizador corporal integrado?

No, solo los elementos de formulario diseñados para contener datos en el formulario se envían automáticamente con la publicación del formulario. Los atributos del elemento principal form como name y action no se envían.

Un truco que se usa a menudo en formularios es insertar un elemento oculto en el formulario (uno que el usuario no ve) y poner datos en ese elemento que desea enviar al servidor. Luego, el servidor puede acceder a los datos como cualquier otro elemento de formulario con nombre. Puede completar esos elementos cuando se diseñó originalmente el formulario o puede completarlos dinámicamente con Javascript en cualquier momento antes de enviar el formulario.

Por ejemplo:

 <form method='post' name='form1' action="/form1Submit">
    <input type="hidden" name="action" value="post">
    <input type="hidden" name="formName" value="form1">
    Enter your data here: <input name="data">
    <input type='submit'>
 </form>

Suponiendo que tiene el middleware del analizador corporal configurado correctamente, cuando se envíe este formulario podrá acceder a req.body.action y req.body.formName y req.body.data en su servidor express.

0
jfriend00 4 oct. 2019 a las 05:48