2016-12-26 31 views
0

Node.jsにサーバーアプリケーションを開発しています。理解を深めるために、私は自分の問題をよりよく指摘するために非常に軽いコードを書いた。Nodejs:サーバーとクライアント間のデータ交換

Server.js私が書いた "公共" ディレクトリ内だから、

var express = require('express'); 
var app = express(); 
var port = process.env.PORT || 80; 

var room = function(){ 
    this.users = {}; 
    this.counter = 0; 
} 

app.get('/reg',function(req,res){ 
    console.log(req.params); 
}); 

app.use('/recosh', express.static(__dirname + '/public/')); 
app.listen(port, function(){console.log('ReCoSh Server Starts...\n');}); 

2次のクライアント側のファイル:これは、サーバー側で

room.js

var room = { 
    //notifica al server una nuova registrazione 
    register: function(data){ 
     $.getJSON('/reg',data); 
    } 
} 

index.html

<!doctype html> 
<html> 
    <head> 
     <script src="room.js"></script> 
     <script src="https://code.jquery.com/jquery-1.10.2.js"></script> 
     <script> 
      var register = function() { 
       room.register({ 
        "username": $("#username").val(), 
       }); 
      } 
     </script> 
    </head> 
    <body> 
     <div id="step1"> 
      <input id="username"> 
      <button onclick="register()">register</button> 
     </div> 
    </body> 
</html> 

問題は、ユーザー名を挿入し、レジスタをクリックすることで、サーバー上のコードconsole.log(req.params);がちょうど{}を印刷しておくことです。それはオブジェクトが空であるようです...私が試してみたらconsole.log(req.params["username"])それはundefinedを印刷します。

なぜこの単純なオブジェクトがサーバーから見えないのですか?

は、すべての

答えて

0

まず、あなたはその後app.get('/register'..app.use('/register'..を変更this.users[username]

this.user[username]を変更し、この

room.prototype.addUser = function(username){ 
    if(username){ 
     this.users[username] = username; 
     this.counter++; 
    } 
} 

にあなたのコード内の小さなタイプミスを変更する必要がありますが、私はpostメソッドを使用することをお勧めしますが、してみましょうほとんど修正を加えずに作業してください。そして、これ以外にコールバック内でregister関数を呼び出さないでください。ですから、このような何か必要があります:あなたはusername idで値を取得するのに対し、クライアント側に一方

app.get('/register',function(req,res){ 
    var data = { 
     username: req.params['username'] 
    } 
    room.addUser(data.username); 
    console.log('user added\n'); 
}); 

を入力idがnicknameに等しいので、あなたにもこの変更を行う必要があります。

<input id="nickname">~<input id="username">

+0

@Karlenにお返事ありがとうございます。 ''タグに関して、私はidとしてニックネームを使用しましたが、 ' 'のスクリプトコードでは、' register.'関数を 'room.register({" username ":$("#nickname " ).val()});} '。しかし、私はあなたの提案を試みたが、依然としてworkignではない "追加されたユーザー"は表示されません... – pittuzzo

+0

私はあなたが答えを受け入れることを確認します。あなたが成功することを願って – Karlen

関連する問題