首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何将Json对象通过node js服务器发送到express-handlebar html?

如何将Json对象通过node js服务器发送到express-handlebar html?
EN

Stack Overflow用户
提问于 2018-05-29 20:19:12
回答 1查看 1.2K关注 0票数 0

我使用了一个node js后端和express-handlebar作为前端的模板。我正在从mysql数据库中获取json文件并将其发送到我的dashboard.hbs文件。问题是,json会进入浏览器,只要从html访问它,它就会显示所有内容,但在脚本内部,它就会变得疯狂。有人能告诉我我做错了什么吗?我已经浏览了很多网站,还有thisthis。这些都不起作用。我也在我的hbs中使用register helper来串化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打印在我的服务器上,就像

[{"fileName":"blob_1527417588127.jpg","fileLink":"localhost:3000/img/blob_1527417588127.jpg"},{"fileName":"blob_1527417588127.jpg","fileLink":"localhost:3000/img/blob_1527417588127.jpg"}]

但在浏览器中,我只得到一个对象,如果我试图将其解析为json或尝试直接使用它,则会发生错误。我已经说过,我尝试过使用registerHelper作为快捷车把手,如果它能做到,我就会关注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部分,我也打印了怪物json,它完美地显示了,但是当我从我的脚本打印时,它变得疯狂了。有人能帮我吗??

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-06-04 03:15:38

这很奇怪,但我找到了我自己问题的答案。也许这会帮助一些和我一样掉进坑里的人。因此,在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});
  });
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50584250

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档