Я пытаюсь отправить переменную из моего клиентского файла JavaScript в мой файл app.js на стороне сервера. Я знаю, что вы можете получить значение из чего-то вроде поля ввода формы, используя такие методы, как приведенный ниже (используя Express):
var express = require('express');
var app = express();
var path = require('path');
let cityResponse;
app.post('/city', function(req,res) {
cityResponse = {
user_name: req.body.userName
}
res.sendFile(path.join(__dirname, '/client/city/index.html'));
});
Но я бы хотел получить значение не напрямую из HTML, а из файла JavaScript, к которому прикреплен HTML.
Кроме того, в настоящее время я использую Socket.io для отправки данных с сервера на клиент и наоборот, используя window.onload
, чтобы сообщить серверу, когда страница готова:
index.js
window.onload = function() {
socket.emit('cityPageReady');
console.log("city page ready");
};
socket.on('cityPageInfo', function(cityResponse) {
console.log('city page info received');
console.log(cityResponse);
console.log(cityResponse.user_name);
userName = cityResponse.user_name;
document.getElementById("name").innerHTML = userName;
});
app.js
var city = io.of('/city').on('connection', (socket) => {
console.log('A user has connected!');
socket.on('cityPageReady', function() {
socket.emit('cityPageInfo', cityResponse);
console.log('city page ready recieved');
});
});
Это работает, но многие люди говорили, что это излишне, или, как выразился один человек, "используя молоток, чтобы убить пчелу". В идеале я бы хотел использовать оптимальный метод. Я знаю, что шаблонизаторы могут достичь этого, но я не хочу переписывать весь мой HTML только для того, чтобы иметь возможность отправить одну переменную на сервер.
Повторюсь, мои вопросы:
- Как получить переменную из файла JavaScript на стороне клиента (не HTML)?
- Каков наилучший способ отправить эти переменные обратно на сторону клиента?
Любая помощь будет принята с благодарностью.