Я разрабатываю серверное приложение в Node.js. Для лучшего понимания я написал очень легкий код, чтобы лучше указать мою проблему. Это серверная часть:
Сервер.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');});
Поэтому в каталоге «public» я написал два следующих файла на стороне клиента:
комната.js
var room = {
//notifica al server una nuova registrazione
register: function(data){
$.getJSON('/reg',data);
}
}
индекс.формат 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>
Проблема в том, что вставив логин и нажав на register, код console.log(req.params);
на сервере просто распечатывается {}
. Кажется, что объект пуст… Если я попробую console.log(req.params["username"])
его отпечатки undefined
.
Почему этот простой объект не виден сервером?
Прежде всего, вы должны изменить маленькую опечатку в вашем коде на это
изменение
this.user[username]
наthis.users[username]
Затем измените
app.use('/register'..
наapp.get('/register'..
, но я бы рекомендовал использоватьpost
метод, но давайте работать с небольшими модификациями, и кроме этого вы не вызываетеregister
функцию внутри обратного вызова. Так что вы должны сделать что-то вроде этого:С другой стороны, на стороне клиента входной id равен
nickname
while you get the value byusername
id, поэтому вы также должны сделать это изменение:<input id="nickname">
к<input id="username">