Soy nuevo en el backend de javascript y tengo un formulario que, al enviar, se supone que muestra el objeto enviado, pero en su lugar muestra un objeto vacío. He incluido el analizador corporal, así que no estoy seguro de dónde está el problema. Aquí está mi archivo app.js:
const express = require("express"); const app = express(); const mustacheExpress = require("mustache-express"); const bodyParser = require("body-parser"); const pgp = require("pg-promise")(); app.engine("html", mustacheExpress()); app.set("view engine", "html"); app.set("views", __dirname + "/views"); app.use("/", express.static(__dirname + "/public")); app.use(bodyParser.urlencoded({ extended: false })); app.use(bodyParser.json()); app.get('/new_creature',function(req,res){ res.render('new_creature/index'); }); app.post('/new_creature', function(req,res){ res.end(JSON.stringify(req.body)); console.log(req.body); // res.render('new_creature/index'); });y aquí está mi archivo views/creatures/new_creature/index.html:
<form method="POST" action="/new_creature"> Species:<input type="text"> Family:<input type="text"> Habitat:<input type="text"> Diet:<input type="text"> Planet:<input type="text"> <input type="submit" placeholder="submit"> </form>Si desea que bodyparser funcione, debe tener atributos de nombre en los elementos de su formulario que desea publicar. Por ejemplo:
<form method="POST" action="/new_creature"> Species:<input name='species' type="text"> Family:<input name='family' type="text"> Habitat:<input name='habitat' type="text"> Diet:<input name='diet' type="text"> Planet:<input name='planet' type="text"> <input type="submit" value="submit"> </form>Además, el marcador de posición no tiene sentido en un botón de envío; marcador de posición es el texto fantasma que se supone que debe mostrarse en una entrada que no se ha completado.