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);

ただし、どちらの場合も、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)

問題の行は、 val.usernameconsole.log(val);をコンソールに記録しようとしたときです。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 に答える