Задать вопрос
@zaralX
Я человек, я упал с луны.

Как в ejs сайте отобразить перменную из js?

Я делаю сайт с авторизацией через дискорд (её я уже сделал) но вышла проблема.

Что бы было понятней объясню алгоритм:
Сайт логина -> Авторизатор дискорда -> Страница после авторизации

После успешной авторизации я получаю данные из которых забираю нужный мне data.body.username
но вот беда я не знаю как его отправить на сайт.

Я искал много статей и говорилось что просто нужно импортировать js потом вписать в < script > вызов прописаной заранее функции которая отдаст это значение.. но по итогу эту функцию не детектило :(

logged.ejs [Клик]
Я ЗНАЮ ТО ЧТО ИМПОРТИРОВАТЬ CSS БЕЗПОЛЕЗНО В EJS ЭТО ПРОСТО ДЛЯ ПРЕД ПРОСМОТРА.

<!DOCTYPE html>
<html>
<head>
  <title>Welcome!</title>
  <meta charset="utf-8">
  <link rel="stylesheet" href="style.css">
  <link href="https://fonts.googleapis.com/css2?family=Raleway:wght@700&display=swap" rel="stylesheet">
  <script type="index.js"></script>
  <script type="utils.js"></script>
</head>
<body>
    <div class="body-container">
        <div class="container-left-menu">
            <div class="menu-profile">
                <img src="avatar.png" alt="Avatar" class="menu-profile-avatar">
                <div class="menu-profile-bio-container">
                    <div class="bio-name", id="bio-name">Сюда нужно как то запихнуть переменную NAME</div>
                </div>
                
            </div>
            <button class="menu-active-button">Главная</button>
            <button class="menu-button">Ещё что-то</button>
            <button class="menu-button">Ещё что-то</button>
            <button class="menu-button">Ещё что-то</button>
        </div>
        <div class="container-right">
            hi
        </div>
    </div>
</body>
</html>


index.js [Клик]

.......

var logged = new Map();
var name;

..............

            .then(data => {
                logged.set(request.ip, data.body.id);

                var name = data.body.name;

                response.render("index_logged.ejs");
            })
            .catch((err) => {
                response.render("index.ejs");
            })

...............

function getName() {
    alert("hello");
    return name;
    // пробовал
}

.........
  • Вопрос задан
  • 70 просмотров
Подписаться 1 Простой 1 комментарий
Решения вопроса 1
@zaralX Автор вопроса
Я человек, я упал с луны.
РЕШЕНО
Долгими тернистыми интернетными путями я нашёл решение на стоке


в .js:
response.render('index_logged.ejs', { name: data.body.username || '[no name]' });

в html:
<%= name %>

Для тех кто найдёт этот вопрос объясняю.
response.render('index_logged.ejs', { имя_новой_переменной: переменная_в_js_или_её_получение || 'если чтото пошло не так напишется это' });

<%=созданная_переменная_в_js_при_рендере %>
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы