У меня есть файл index.ejs, в котором я использовал тег скрипта и написал некоторый javascript для манипуляций с dom. Теперь я хочу использовать переменную из этого файла в моем файле app.js. Как этого добиться? Для ссылки на переменную файла ejs мы делаем так:
{someVariable:value}
Я просто хочу сделать наоборот, т.е. получить доступ к переменной, объявленной в теге скрипта файла ejs, в файл app.js.
//index.ejs
<script>
window.onload=function(){var c = document.getElementById("city_search").options[1].value;
console.info(c);
};
function changeCarousel(){
var x = document.getElementById("city_search").value;
console.info(x);
}
</script>
Как мне получить доступ к переменной x в app.js, если она там не объявлена.
@JimB. правильно, вам нужно будет создать конечную точку API для отправки данных обратно на сервер, а затем что-то с ними делать. Другой способ сделать это - использовать что-то вроде веб-сокетов между клиентом и сервером.



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


How do I access variable x in app.js, since it is not declared there.
Вы этого не сделаете. Не прямо. Переменная x находится внутри браузера, запущенного на клиентском компьютере, и не доступна напрямую или не видна вашему серверу или вашему серверному компьютеру.
Когда у вас есть переменная в Javascript внутри веб-страницы, которая запущена в браузере, единственный способ передать ее на ваш сервер - это сделать Ajax-вызов на ваш сервер или встроить это значение в URL-адрес и запросить новую страницу. с этим значением в URL-адресе (как часть пути или параметра запроса).
Чтобы понять больше, давайте немного рассмотрим, как файл EJS работает на вашем сервере node.js.
В момент, когда скрипты выполняются в браузере, они представляют собой полностью отдельную среду от вашего сервера. Они выполняются в браузере на клиентском компьютере, а не на сервере. Чтобы поделиться данными с веб-страницы с сервером, вы должны инициировать некоторую связь с сервером и отправить на сервер некоторые данные. Есть несколько способов сделать это. Например, вы можете выполнить вызов Ajax на сервер, отправить ему данные с веб-страницы, получить сервером этот запрос Ajax и затем отправить ответ. Затем ваш клиентский Javascript вернет этот ответ Ajax и затем сможет делать с этим результатом все, что захочет (вставить его на веб-страницу, загрузить другую страницу, показать ее пользователю и т. д.).
Если бы вы сказали нам более конкретно, что вы пытаетесь сделать со значением x, мы могли бы дать более подробную рекомендацию о том, как этого добиться.
Я хочу передать значение переменной в запросе sql, который написан в app.js
@Apoorv - Создайте маршрут на своем сервере, на который вы можете отправить вызов Ajax со своей веб-страницы со значением x в качестве параметра запроса, и ваш сервер затем проанализирует параметр запроса, использует его в запросе sql и вернет результаты запроса sql обратно в качестве ответа на клиентский вызов Ajax. Для этого используется Ajax.
Спасибо за ответ. Я постараюсь сделать это.
Я много исследовал, но сделал какие-либо учебные пособия или ресурсы для достижения этой цели. Подскажите пожалуйста, как это сделать.
EJS односторонний. Вы визуализируете шаблон в app.js на основе имеющихся там переменных, и он доставляется в браузер. У браузера нет механизма для возврата значений обратно. Для этого вам нужно будет добавить api.