2016-12-26 123 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');}); 

於是 「大衆」 的目錄,我寫中的兩個下面的客戶端文件:

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

首先,你應該改變一個小錯字在你的代碼到這個

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

改變this.user[username]this.users[username]

然後換app.use('/register'..app.get('/register'..,但我會建議使用post方法,但讓我們做一些修改工作,除此之外,你不要在回調中調用register函數。所以,你應該做這樣的事情:

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

在另一方面在客戶端輸入ID等於nickname而您username ID獲得的價值,所以你應該讓這種變化,以及:

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

+0

感謝回答@Karlen。關於''標籤,我使用了「nickname」作爲id,但在''的腳本代碼中,我用這種方式寫了函數'register' room.register({「username」:$(「#nickname」 ).val()});}'。然而,我嘗試了你的建議,但仍然沒有workign「用戶添加」不顯示... – pittuzzo

+0

我看你已經接受了答案。希望你成功 – Karlen

相關問題