Estoy tratando de obtener datos del formulario del método "POST" del formulario HTML usando el método app.post pero puedo capturar cualquier cosa para req.body. ¿Qué estoy haciendo mal?
Mi formulario html -
<form method="POST" action="/success.html"> <div id="input-area"> <textarea id="title" name="title" rows="1" cols="75" placeholder="Title" onkeyup="instance.tweaker()"></textarea> <textarea rows="10" type="text" cols="75" placeholder="Description" name="description"></textarea> <div id="calender"><input id="dater" type="date" value=""></div> <button type="submit" value="Submit" id="buton">Add Task</button> </div> </form> <script src="backend2.js" defer></script>mi codigo js
const express = require('express'); const bodyParser = require('body-parser'); const app = express(); app.listen(3308,() =>{ console.log('My server is running'); }) const jsonParser = bodyParser.json(); // const urlencodedParser = bodyParser.urlencoded({ extended: false }) app.post('/success.html', urlencodedParser , function (req, res) { console.log(req.body.title); })Reproduje tu código sin ningún error. Para probarlo rápidamente, envío index.html como ruta predeterminada.
const express = require('express'); const path = require('path'); const bodyParser = require('body-parser'); const port = 3308; const app = express(); const urlencodedParser = bodyParser.urlencoded({ extended: false }); app.get('/', (req, res) => { res.sendFile(path.join(__dirname, '/index.html')); }); app.post('/success.html', urlencodedParser, (req, res) => { res.send(req.body.title); }); app.listen(port, () => { console.info(`server running on port ${port}`); }); <!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8" /> <title>Upload Example</title> </head> <body> <form method="POST" action="/success.html"> <div id="input-area"> <textarea id="title" name="title" rows="1" cols="75" placeholder="Title" onkeyup="removedForExample" ></textarea> <textarea rows="10" type="text" cols="75" placeholder="Description" name="description" ></textarea> <div id="calender"><input id="dater" type="date" value="" /></div> <button type="submit" value="Submit" id="buton">Add Task</button> </div> </form> </body> </html>En primer lugar, no estoy seguro de qué versión de Express está usando, pero si está usando la versión 4.0 o superior, realmente no necesita importar body-parser separado.
Además, puede volver a pedir el código. ¿Por qué no intentas así?
const jsonParser = bodyParser.json(); const urlencodedParser = bodyParser.urlencoded({ extended: false }) app.post('/success.html', urlencodedParser , function (req, res) { console.log(req.body.title); }) app.listen(3308,() =>{ console.log('My server is running'); })