Javascript 接收已发布的对象node.js
我有一个目标:Javascript 接收已发布的对象node.js,javascript,jquery,ajax,node.js,Javascript,Jquery,Ajax,Node.js,我有一个目标: 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',
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);
但两次firebug都会吐出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中接收已发布的对象?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代码>
()将console.log
分配给success
无效。您正在为它分配console.log的返回值,而不是告诉它执行它。您需要使用success:function(){console.log(…);}
@bradcristie it将“数据发布”记录到日志中,这很好,虽然您是对的,但它将--先发制人地调用ajax,而不是在成功回调上。吉尔伯特,只是为了进一步澄清区别:我怀疑您使用的是Express,如果是这样的话,看看这篇帖子上被接受的答案,val
的值在服务器上仍然是null
,我需要做些什么才能在服务器上拾取val
吗?我仍然得到val没有定义
,但是使用console.log(req.body.val)
我在服务器日志中得到了预期的响应。所以val=req.body.val
对meglad来说很好,它可以工作。如果你接受它作为正确答案,那就太好了。