Как включить файл EJS в файл app.js?

У меня есть файл 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, если она там не объявлена.

EJS односторонний. Вы визуализируете шаблон в app.js на основе имеющихся там переменных, и он доставляется в браузер. У браузера нет механизма для возврата значений обратно. Для этого вам нужно будет добавить api.

Jim B. 11.11.2018 23:34

@JimB. правильно, вам нужно будет создать конечную точку API для отправки данных обратно на сервер, а затем что-то с ними делать. Другой способ сделать это - использовать что-то вроде веб-сокетов между клиентом и сервером.

Joshua Terrill 12.11.2018 01:31
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
2
173
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

How do I access variable x in app.js, since it is not declared there.

Вы этого не сделаете. Не прямо. Переменная x находится внутри браузера, запущенного на клиентском компьютере, и не доступна напрямую или не видна вашему серверу или вашему серверному компьютеру.

Когда у вас есть переменная в Javascript внутри веб-страницы, которая запущена в браузере, единственный способ передать ее на ваш сервер - это сделать Ajax-вызов на ваш сервер или встроить это значение в URL-адрес и запросить новую страницу. с этим значением в URL-адресе (как часть пути или параметра запроса).

Чтобы понять больше, давайте немного рассмотрим, как файл EJS работает на вашем сервере node.js.

  1. Страница запросов браузера (которая представлена ​​вашим файлом EJS).
  2. Ваш сервер получает запрос на эту страницу.
  3. Сервер собирает все релевантные данные для этой страницы, помещает эти данные в объект, а затем отображает страницу EJS. Это расширит страницу EJS и включит в нее любые желаемые данные.
  4. Отрисованная страница EJS отправляется в браузер в качестве ответа на исходный HTTP-запрос.
  5. Браузер получает теперь HTML-страницу (отображаемую страницу EJS), анализирует ее и отображает.
  6. Браузер анализирует и запускает любые теги скриптов на странице.

В момент, когда скрипты выполняются в браузере, они представляют собой полностью отдельную среду от вашего сервера. Они выполняются в браузере на клиентском компьютере, а не на сервере. Чтобы поделиться данными с веб-страницы с сервером, вы должны инициировать некоторую связь с сервером и отправить на сервер некоторые данные. Есть несколько способов сделать это. Например, вы можете выполнить вызов Ajax на сервер, отправить ему данные с веб-страницы, получить сервером этот запрос Ajax и затем отправить ответ. Затем ваш клиентский Javascript вернет этот ответ Ajax и затем сможет делать с этим результатом все, что захочет (вставить его на веб-страницу, загрузить другую страницу, показать ее пользователю и т. д.).


Если бы вы сказали нам более конкретно, что вы пытаетесь сделать со значением x, мы могли бы дать более подробную рекомендацию о том, как этого добиться.

Я хочу передать значение переменной в запросе sql, который написан в app.js

Apoorv 12.11.2018 08:51

@Apoorv - Создайте маршрут на своем сервере, на который вы можете отправить вызов Ajax со своей веб-страницы со значением x в качестве параметра запроса, и ваш сервер затем проанализирует параметр запроса, использует его в запросе sql и вернет результаты запроса sql обратно в качестве ответа на клиентский вызов Ajax. Для этого используется Ajax.

jfriend00 12.11.2018 09:12

Спасибо за ответ. Я постараюсь сделать это.

Apoorv 12.11.2018 20:03

Я много исследовал, но сделал какие-либо учебные пособия или ресурсы для достижения этой цели. Подскажите пожалуйста, как это сделать.

Apoorv 15.11.2018 20:38

Другие вопросы по теме