0

我有一个对象:

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);打印 null 有问题的行是当我尝试将 val.username 记录到控制台时。您如何在 node.js 中接收已发布的对象?

4

1 回答 1

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;
参考

于 2012-08-08T17:52:08.760 回答