Juro que estaba funcionando hace unos días, por lo que este comportamiento es realmente extraño para mí. Déjame mostrarte mi código en el lado del cliente
$(document).ready(function() { $("button").click(function() { alert(event.currentTarget.id+"------"+event.currentTarget.value); $.post( "/vote", {id:event.currentTarget.id,count:event.currentTarget.value}, $(this).serialize(), function(res) { } ); }) }) Como puede ver, traté de pasar tanto la id como el value al servidor una vez que se hizo clic en el botón. Hasta ahora, todo está bien porque puedo ver la ventana emergente de alerta en la pantalla con el número de identificación y el valor correctos (Output example -> aaa------23) . Ahora eche un vistazo a mi código del lado del servidor.
app.post('/vote', function(req, res) { var id = req.body.id; var count = req.body.count; console.log("id: " + id); console.log("count: " + count); res.sendStatus(200); res.end(); }); Cuando se ejecuta en la línea var id = req.body.id , el sistema devuelve
TypeError: Cannot read property id of undefined.
count tendrá el mismo resultado.
¿Hay algo obvio que me estoy perdiendo aquí? Porque te juro que funcionaba antes y no he tocado esta parte del código desde entonces. Gracias por la ayuda.
Asegúrese de usar body-parser y esté definido antes de su ruta.
npm install body-parser --savey luego incluirlo antes de definir rutas:
var bodyParser = require('body-parser'); var app = express(); app.use(bodyParser.json()); app.post('/vote', function(req, res) { var id = req.body.id; var count = req.body.count; console.log("id: " + id); console.log("count: " + count); res.sendStatus(200); res.end(); });