Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 接收已发布的对象node.js_Javascript_Jquery_Ajax_Node.js - Fatal编程技术网

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来说很好,它可以工作。如果你接受它作为正确答案,那就太好了。