2016-12-26 7 views
0

Ich entwickle eine Server-App in Node.js. Zum besseren Verständnis habe ich einen sehr leichten Code geschrieben, um besser auf mein Problem aufmerksam zu machen. Dies ist der Server-Seite:Nodejs: Datenaustausch zwischen Server und Client

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

So in der "public" Verzeichnis ich die beiden folgenden clientseitige Dateien geschrieben:

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> 

Das Problem besteht darin, dass durch einen Benutzernamen einfügen und auf Register klicken, wird der Code console.log(req.params); auf dem Server nur {} drucken. Es scheint, dass das Objekt leer ist ... Wenn ich console.log(req.params["username"]) versuche, druckt es undefined.

Warum ist dieses einfache Objekt nicht vom Server sichtbar?

Antwort

0

Zunächst einmal sollten Sie ein wenig Tippfehler in Ihrem Code in diese this.user[username] Dann app.use('/register'..-app.get('/register'.. ändern this.users[username]

Wechsel

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

ändern, aber ich würde empfehlen, post Methode zu verwenden, aber lasst uns mache Arbeit mit kleinen Modifikationen und außerdem rufe die register Funktion nicht innerhalb des Callbacks auf. So sollten Sie etwas tun:

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

Auf der anderen Seite in der Client-Seite die Eingabe-ID nickname gleich ist, während Sie den Wert von username ID erhalten, so sollten Sie diese Änderung vornehmen auch:

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

+0

Danke für die Antwort @Karlen. In Bezug auf das '' Tag, habe ich" Nickname "als ID verwendet, aber im Script Code in der' ' habe ich die Funktion 'register' geschrieben auf diese Weise' room.register ({"username": $ ("# nickname") .val()});} '. Aber ich habe versucht, Ihre Vorschläge, aber immer noch nicht funktioniert "Benutzer hinzugefügt" wird nicht angezeigt ... – pittuzzo

+0

Ich sehe, Sie haben die Antwort akzeptiert. Hoffe, dass du Erfolg hast – Karlen

Verwandte Themen