【问题标题】:Sending data from backend to frontend public Javascript file将数据从后端发送到前端公共 Javascript 文件
【发布时间】:2021-06-22 03:11:35
【问题描述】:

我想将数据从我的后端发送到前端公共 javascript 文件。我知道使用 ejs,但我有一个专用的 javascript 文件,我想将数据发送到该文件。

这是我的后端 nodejs 代码:

router.get('/', isAuth, function (req, res) {
User.find({ id: req.user[0].id }).populate("tweets").populate("tags").exec(function (err, user) {
    res.render("dashboard", {user: user});
    // res.send(user);
});
});

这是我在 body 标记结束之前从 dashboard.ejs 调用脚本文件的方式:

<script src="/dashboard/scripts/script.js"></script>

这就是我希望存储从后端发送的数据的地方。

const ext = data_from_backend

我已经尝试了很多,但无法找到解决方案。

【问题讨论】:

    标签: javascript node.js frontend backend


    【解决方案1】:

    所以,我解决了问题的核心,但也从这里的答案中获得了帮助。这就是我所做的。我首先使用JSON.stringfy() 将对象转换为字符串,然后将其发送到前端脚本,然后使用JSON.parse() 再次转换。但是,由于嵌入代码中的“/”(斜杠),我收到了 JSON code 'T' 错误,因此我不得不将嵌入代码更改为前端脚本中处理的其他内容。

    【讨论】:

      【解决方案2】:

      您可以尝试将您的对象转换为字符串,然后将其传递给脚本标签。 然后您可以解析该字符串,将其转换为对象,然后将其存储为全局变量。 其他脚本标签应该能够访问全局变量。

      将你的节点 js 文件更改为:

      res.render("dashboard", {user: JSON.stringify(user)});
      

      在您的 .ejs 文件中,在您的 &lt;script src="/dashboard/scripts/script.js"&gt;&lt;/script&gt; 之前添加一个脚本标签:

      <script>
          const str = "<%= name %>";
          const obj = str.replace(/&#34;/gi, '\'');
      </script>
      

      现在你可以在其他脚本标签中使用 obj

      <script>alert(obj);</script>
      

      【讨论】:

      • 它可以工作,但现在它把它当作一个字符串。另外,你能告诉我这是做什么的吗? str.replace(/&amp;#34;/gi, '\'')
      • Ejs, stringify 将所有引号 ' 转换为 /" 所以你必须将它们转换回来。使用 JSON.parse(obj) 将字符串转换为对象
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-02-06
      • 1970-01-01
      • 2018-02-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多