Как передать данные JSON из экспресса в скрипт javascript/jQuery в мопсе?

Я пытаюсь передать некоторые данные JSON из экспресс-маршрута в файл .js, который находится в шаблоне .pug. Я не могу понять, как этого добиться. Я пытаюсь следующим образом:

Маршрутизатор:

// Office Locations
router.get('/office_locations', (req, res, next) => {
  var sql = 'SELECT * FROM office_locations ORDER BY oloffice';
  var params = [];
  pool.query(sql, params, (err, result) => {
    if (err) {
      console.info(err);
      res.json(err);
    } else {
      res.render('office_locations', {title: title, tabledata: JSON.stringify(result.rows)});
    }
  });
});

PUG-файл:

extends layout

block content
  .container
    include menu.pug
    .workspace
      .map-content
        .map#map


  include main-addons.pug

  link(rel = "stylesheet" href = "https://unpkg.com/[email protected]/dist/leaflet.css" integrity = "sha512-puBpdR0798OZvTTbP4A8Ix/l+A4dHDD0DGqYW6RQ+9jxkRFclaxxQb/SJAWZfWAkuyeQUytO7+7N4QKrDh+drA= = " crossorigin = "")
  script(src = "https://unpkg.com/[email protected]/dist/leaflet.js" integrity = "sha512-QVftwZFqvtRNi0ZyCtsznlKSWOStnDORoefr1enyq5mVL4tmKB3S/EnC3rRJcxCPavG10IcrVGSmPh6Qw5lwrg= = " crossorigin = "")
  script(src = "/javascripts/office_locations.js")
  script(src = "/javascripts-dev/table.js")

Файл, в котором мне нужна информация о табличных данных, это table.js:

$(document).ready(function() {
  // get the table data
  var tabledata = !{tabledata};
  console.info(tabledata);
});

Но я всегда получаю ложь при входе в консоль.

Как этого добиться?

Поведение ключевого слова "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
0
124
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

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

Добавьте этот код перед строкой script(src = "/javascripts-dev/table.js"):

 script(type='text/javascript').
   window.tabledata = "#{tabledata}";

Спасибо! Просто понял, что мне нужно использовать переменную окна.

Fabrizio Mazzoni 23.03.2019 14:06

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