脚本标签中的jstl使JSON崩溃

时间:2019-09-03 02:37:00

标签: javascript express ejs

这真杀了我。通过express.render将json从app.js(server)发送到main.ejs(client)可以正常工作。用jstl捕获它可以正常工作。但是,当在main.ejs内使用标记时,jstl标记会将json中的撇号转换为html代码(“)。因此它无法识别json并抛出错误。

这是我要发送的原始json数据。

[{ contacts:
     { facebook: '12', linkedIn: 'li', phoneNum: 'ph', github: 'git' },
    _id: 5d6d11f3b1160c12404e8eab,
    name: 'portfolio9',
    intro: 'intro',
    resume: 'resume',
    body: 'body',
    liked: 1 },
  { contacts:
     { facebook: '12', linkedIn: 'li', phoneNum: 'ph', github: 'git' },
    _id: 5d6d11fab1160c12404e8eac,
    name: 'portfolio10',
    intro: 'intro',
    resume: 'resume',
    body: 'body',
    liked: 1 } ]

失败的方法:uriencode / decoding,json字符串化/解析,将其拆分为单个json而不是json数组。字符串replace(/“ / gi,”'“)然后json解析也失败。所有错误都相同(意外令牌)。

来自app.js的代码

    res.render("main",{settings:settings,portfolios:ports[0],articles:articles[0]});

main.ejs中的代码

    <%console.log(portfolios)%>  //this is normally printed on my cmd console
    <script>
        let tmp=<%=portfolios%>;
        console.log(tmp); //{&#34;contacts&#34;:{&#34;facebook&#34;:&#34;12&#34;,&#34;linkedIn&#34;:&#34;li&#34;,&#34;phoneNum&#34;:&#34;ph&#34;,&#34;g..
    </script>

这种垃圾会在chrome客户端控制台中出现。全部'转换为html代码。

0 个答案:

没有答案