我有一个对象:
var val = {username:'gilbertbw',password:'password',password2:'password',email:'email@email.com',firstname:'gilbert',lastname:'BW',test:true};
我对它运行一些验证,然后将其发布到我的node.js服务器:
console.log(
$.ajax({
type: 'POST',
url: '/signup',
data: val,
success: function(){console.log('data posted')},
dataType: "json"
})
);
在服务器上我尝试只调用对象val:
console.log(val.username);
并像往常一样从帖子中拉出来:
val = req.param(val,null);
console.log(val.username);
但两次萤火虫吐出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)
如果我只是console.log(val);
它打印为空
有问题的行是当我尝试将val.username记录到控制台时。你如何在node.js中发布一个发布的对象?
答案 0 :(得分:0)
val
是客户端变量。服务器无法知道您将此对象命名为“val”。
data: val
就像:
data: {username:'gilbertbw',password:'password',password2:'password',email:'email@email.com',firstname:'gilbert',lastname:'BW',test:true}
因此您的服务器找不到val
字段。
改为:
data: {
"val": val
}
修改强>
另外,您的第req.param(val,null);
行应为req.param("val",null);
或val = req.body.val;
(reference)