Estoy tratando de obtener la entrada del usuario del lado del cliente al lado del servidor usando el analizador de cuerpo en node.js. Estoy usando express como base de mi aplicación.
Aquí está el código del lado del servidor:
app.post('/register', urlencodedParser, (req, res) => { console.log("The text is: " + req.body.url)})Aquí está el formulario html, del cual estoy tratando de extraer la entrada:
<form class="modal-dialog" action="/register" method="POST"> <div class="modal-content"> <div class="modal-header"> <h5 class="modal-title" id="addModalLabel">Add comics</h5> <button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button> </div> <div class="modal-body"> <div class="alert alert-primary" role="alert"> Curently the amount of URL's supported is limited. Check out info page for more detailed info. </div> <div class="form-group"> <label for="url">URL of comics</label> <input type="text" class="form-control" id="url" aria-describedby="urlHelp" placeholder="Enter URL"> <small id="urlHelp" class="form-text text-muted">For detailed guide on how to find URL go to info page.</small> </div> <div class="form-group"> <label for="exampleFormControlTextarea1">Description</label> <textarea class="form-control" id="description" rows="3"></textarea> </div> </div> <div class="modal-footer"> <button type="button" class="btn btn-secondary" data-bs-dismiss="modal">Close</button> <button type="submit" class="btn btn-primary">Add</button> </div> </div> </form>El problema es que la salida no está definida. Soy nuevo en node.js, por lo que esta podría ser una pregunta fácil, pero estoy atascado durante bastante tiempo, así que no juegues.
Debe agregar un atributo de name a su entrada: <input name="url" … /> . Solo los elementos de formulario con un atributo de name tendrán sus valores pasados al enviar un formulario.
Dentro de los campos de input del formulario, la forma en que node.js los reconoce es especificando el campo de name en la entrada en el front-end. así como esto:
<input type="text" class="form-control" id="url" name="url" aria-describedby="urlHelp" ahora en el backend, dado que su ruta es una función .post , puede acceder a ella usando req.body.url , ¡lo cual ya está haciendo!
No compartió la forma en que configuró el servidor. Lo primero, body-parser está en desuso, puede usar express para especificar su middleware así:
app.use(express.urlencoded({ extended: true })); urlencoded es el analizador que necesita para analizar los datos del formulario HTML.