Javascript 如何通过NodeJS服务器发送Json对象来表示Handlebar html?

Javascript 如何通过NodeJS服务器发送Json对象来表示Handlebar html?,javascript,json,node.js,Javascript,Json,Node.js,我使用的是NodeJS后端和express Handlebar作为前端的模板。我正在从mysql数据库获取json文件,并将其发送到dashboard.hbs文件。问题是json将进入浏览器,只要从html访问它,它就会正确显示所有内容,但在脚本中它会变得疯狂。有人能告诉我我做错了什么吗?我已经浏览了很多网站。这些都不管用。我还在hbs中使用register helper来处理stringyfying json,但它仍然向我显示奇怪的转换json。这是我的密码 exports.dashboa

我使用的是NodeJS后端和express Handlebar作为前端的模板。我正在从mysql数据库获取json文件,并将其发送到dashboard.hbs文件。问题是json将进入浏览器,只要从html访问它,它就会正确显示所有内容,但在脚本中它会变得疯狂。有人能告诉我我做错了什么吗?我已经浏览了很多网站。这些都不管用。我还在hbs中使用register helper来处理stringyfying json,但它仍然向我显示奇怪的转换json。这是我的密码

  exports.dashboard = function (req, res) {
//var dashboards=dashboardModel.findAll({ include: [{ all: true }]});
var dasboard = null;
dashboardModel.findAll().then(dasboards => {
  dasboard = dasboards;
  if (dasboard.length > 0)
    console.log(dasboard[9].monster);
  else
    console.log('no dashboard');

    var jsss=JSON.parse(dasboard[9].monster);
    var st=JSON.stringify(jsss);

    console.log(st);

  res.render('dashboard', {
    dasboard: dasboard,
    js:jsss

  });
})
}

这是我的模板

        <!DOCTYPE html>
    <html>

    <head>
        <title>FaceMask API</title>
    </head>

    <body>
        <h2>The list of Monsters</h2>

        {{#if dasboard}}
        <table>
            <tr>
                <th>PRODUCT ID</th>
                <th>GIF_ID</th>
                <th>GIF_TITLE</th>
                <th>PRICE</th>
                <th>Monster </th>
                <th>GIF_PACK</th>
            </tr>
            {{#each dasboard}}
            <tr onclick="gotoEditDashboard('{{this.id}}')">
                <td>{{this.product_id}}</td>
                <td>{{this.gif_id}}</td>
                <td>{{this.gif_titile}}</td>
                <td>{{this.price}}</td>
                <td>{{this.monster}}</td>
                <td>{{this.gif_pack}}</td>
            </tr>


            {{/each}}
        </table>
        {{else}}
        <p> No Data Available {{dasboard}}</p>
        {{/if}}
    <script src="javascripts/dashboard.js"></script>
    <script type="text/javascript">
    var j="{{{ js}}}";
    //var jsss=JSON.parse(j);
    console.log(j[2].toString());
    //console.log("asd: "+jsss[0].fileName);
    </script>

    </body>

    </html>
但在浏览器中,我只得到一个对象,如果我试图将其解析为json或尝试直接使用它,就会发生错误。我已经说过,我尝试使用registerHelper for express Handlebar,如果它这样做了,那么我会得到以下json

[{&quot;fileName&quot;:&quot;blob_1527417588127.jpg&quot;,&quot;fileLink&quot;:&quot;localhost:3000/img/blob_1527417588127.jpg&quot;},{&quot;fileName&quot;:&quot;blob_1527417588127.jpg&quot;,&quot;fileLink&quot;:&quot;localhost:3000/img/blob_1527417588127.jpg&quot;}]

奇怪的是,在html部分,我也在打印monster json,它显示得非常完美,但当我从脚本打印时,它会变得疯狂。有人能帮我吗?

这很奇怪,但我找到了我自己问题的答案。也许它会帮助像我一样掉进同一个坑里的人。因此,在html文件内的脚本中,您可以编写以下代码来解码json对象的数组

{{#each js}}
      var obj = {};
      {{#each this}}
        obj.{{@key}} = '{{this}}';
      {{/each}}
      m.push(obj);
    {{/each}}
这就是你在服务器上写的东西

    var k=[];
    var s={
    "a":"as",
    "b": "ee"
};

var s1={
    "a":"ast",
    "b": "eet"
};
k.push(s);
k.push(s1);


app.get('/', function(req, res){
    res.render('index', {js:k});
  });
    var k=[];
    var s={
    "a":"as",
    "b": "ee"
};

var s1={
    "a":"ast",
    "b": "eet"
};
k.push(s);
k.push(s1);


app.get('/', function(req, res){
    res.render('index', {js:k});
  });