I swear it was working few days ago, so this behavior is really strange for me. Let me show you my code on client side
$(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) {
}
);
})
})
As you can see, I tried to passed both id and value back to server once the button clicked. So far everything here is good because I can see the alert pop-up on screen with the correct id number and value (Output example -> aaa------23). Now take a look on my server side code.
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();
});
When execute to the line var id = req.body.id, the system returns
TypeError: Cannot read property id of undefined.
count will have the same result.
Is there anything obvious I am missing here? Because I swear it was working before and I haven't touch this part of the code since then. Thanks for the help.
Make sure you use body-parser and it is defined before your route.
npm install body-parser --save
and then include it before you define routes:
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();
});