Я пишу чат-приложение. Во-первых, я загрузил свои взгляды через Ajax, но потом понял, что это не обязательно, потому что я могу использовать экспорт в express insted. Я думаю, что это лучшее решение, но теперь я не знаю, как передать переменную из моей формы входа в script.js. Передача имени пользователя (username = req.body.user;
) в комнатах.js на server.js работает, потому что у меня есть собственное имя в консоли, которое я ввел в текстовый ввод, но когда я испускаю 'test' для script.js, ничего не происходит, я В моей консоли браузера ничего нет. Я полагаю, что сообщение в консоли появляется на мгновение, а затем новое представление загружается, и оно исчезает. Я попытался изменить порядок кода, но не помог. Любые предложения? Я делаю что-то неправильно ? Я только начинаю изучать узел и выражать, поэтому буду благодарен за любую помощь.express.js, передающие переменные после загрузки изображения
server.js
var express = require('express')
, routes = require('./routes')
, music = require('./routes/music')
, art = require('./routes/art')
, rooms = require('./routes/rooms')
, http = require('http')
, app = express()
, server = http.createServer(app)
, io = require('socket.io').listen(server)
, path = require('path')
, jade = require('jade')
, mysql = require('mysql');
app.configure(function() {
app.set('views', __dirname + '/views');
app.set('view engine', 'jade');
app.set("view options", {layout: false});
app.use(express.static(__dirname + '/public'));
app.use(express.bodyParser());
app.use(app.router);
});
app.get('/', routes.index);
app.get('/music', music.rooms);
app.get('/art', art.rooms);
app.post('/rooms', rooms.rooms);
io.sockets.on('connection', function(socket) {
socket.on('joinRoom', function(data) {
socket.username = username;
socket.room = data.room;
console.log('socket room and username in console' + socket.room+socket.username);
socket.join(socket.room);
socket.emit('test');
});
server.listen(3000);
script.js
var socket = io.connect();
$(document).ready(function() {
$('#rooms').on('click', 'a', function() {
var room = $(this).data('id');
socket.emit('joinRoom', {room: room});
});
socket.on('test', function(){
console.log('check if it works');
});
});
index.jade
include header.jade
div#page
div(class="box")
form(name="input", action='rooms', method="post")
div
p
| Login:
input(type="text", name="user", class="user")
input(type="submit",class="submit",value="Login")
rooms.jade
include header.jade
div#page
div(class="box")
div#rooms
h2 Rooms
a(data-name='abrakadabra', data-id='1', href='music') Abrakadabra
a(data-name='aloha', data-id='2', href='art') Aloha
rooms.js в маршрутах папку
exports.rooms = function(req, res){
res.render('rooms', { title: 'Rooms' });
username = req.body.user;
};
music.js (одна из комнаты)
exports.rooms = function(req, res){
res.render('music', { title: 'Music room' });
};
Где вы отправляли сообщение "joinRoom" на сервер? – Krasimir
@ Krasimir right, я обновил это (ранее, прежде чем вставить мой код здесь, я сделал небольшой заказ) – elevenMinutes
Не могли бы вы попытаться прокомментировать 'socket.join (socket.room);'. Есть ли метод соединения на самом деле. – Krasimir