I've got an object:
var val = {username:'gilbertbw',password:'password',password2:'password',email:'email@email.com',firstname:'gilbert',lastname:'BW',test:true};
I run some validation against it and then post it to my node.js server:
console.log(
$.ajax({
type: 'POST',
url: '/signup',
data: val,
success: function(){console.log('data posted')},
dataType: "json"
})
);
On the server i have tryed just calling the object val:
console.log(val.username);
and pulling it from the post like I normally would:
val = req.param(val,null);
console.log(val.username);
But both times firebug spits out the 500 ISE:
"{"error":{"message":"val is not defined","stack":"ReferenceError: val is not defined at exports.signup (C:\\Users\\Gilbert\\WebstormProjects\\NodeOfGames\\routes\\user.js:37:21)
If i just console.log(val);
it prints null
The line in question is when I try to log val.username to console. How do you recive a posted object in node.js?
val
is a client-side variable. there is no way for the server to know you named this object "val".
data: val
is just like:
data: {username:'gilbertbw',password:'password',password2:'password',email:'email@email.com',firstname:'gilbert',lastname:'BW',test:true}
so there is no val
field for your server to find.
do this instead:
data: {
"val": val
}
edit:
also, your line req.param(val,null);
should be req.param("val",null);
or val = req.body.val;
(reference)