简体   繁体   English

如何将JSON数据从express传递到pug中的javascript / jQuery脚本?

[英]How to pass JSON data from express to a javascript/jQuery script in pug?

I am trying to pass some JSON data from an express route to a .js file which is in a .pug template. 我试图将一些JSON数据从快速路由传递到.pug模板中的.js文件。 I can't figure out how to achieve this. 我不知道如何实现这一目标。 I am trying as follows: 我正在尝试如下:

The router: 路由器:

// 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.log(err);
      res.json(err);
    } else {
      res.render('office_locations', {title: title, tabledata: JSON.stringify(result.rows)});
    }
  });
});

The PUG file: 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/leaflet@1.4.0/dist/leaflet.css" integrity="sha512-puBpdR0798OZvTTbP4A8Ix/l+A4dHDD0DGqYW6RQ+9jxkRFclaxxQb/SJAWZfWAkuyeQUytO7+7N4QKrDh+drA==" crossorigin="")
  script(src="https://unpkg.com/leaflet@1.4.0/dist/leaflet.js" integrity="sha512-QVftwZFqvtRNi0ZyCtsznlKSWOStnDORoefr1enyq5mVL4tmKB3S/EnC3rRJcxCPavG10IcrVGSmPh6Qw5lwrg==" crossorigin="")
  script(src="/javascripts/office_locations.js")
  script(src="/javascripts-dev/table.js")

The file where I require the tabledata information is table.js: 我需要tabledata信息的文件是table.js:

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

But am getting always false when logging to console. 但是登录到控制台时总是变得假。

How can this be achieved? 如何做到这一点?

Add this code before the script(src="/javascripts-dev/table.js") line: script(src="/javascripts-dev/table.js")行之前添加以下代码:

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM