【问题标题】:ejs showing error inside a script tagejs在脚本标签内显示错误
【发布时间】:2018-07-25 10:50:38
【问题描述】:
<script>
    window.data = <%- JSON.stringify(data) -%> 
</script>
<%- include('header') -%>   
    <div id="root"><%- content -%></div>
<%- include('footer') -%>

这会引发错误,说明脚本标记中的输入意外结束。这是在服务器端运行的,数据和内容都由渲染调用提供。

【问题讨论】:

    标签: node.js server ejs


    【解决方案1】:

    这意味着函数调用JSON.stringify 遇到了错误。你能注销数据并验证它确实是valid JSON吗?

    一些常见错误是缺少括号,例如 }],或者 JSON 中的键/值未用双引号 (") 括起来。

    【讨论】:

      【解决方案2】:

      这对我有用。

      第一种选择,将对象/数组在服务器上转成字符串,发送到EJS,然后在客户端解析,同时替换一些特殊字符:

      服务器:

        res.render('/', {
              data: JSON.stringify(data)
          });
      

      客户

      const data = "<%= data %>";
      const dataObject = JSON.parse(data.replace(/&#34;/gi, '\"'));
      

      第二个选项,将对象/数组按原样从服务器发送到客户端。 在客户端使用模板文字进行字符串化,然后使用 JSON.parse:

      服务器:

        res.render('/', {
              data: data
          });
      

      客户

      const data = `<%- JSON.stringify(data) %>`;
      const dataObject = JSON.parse(data);
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-04-23
        • 1970-01-01
        相关资源
        最近更新 更多