【问题标题】:Dont know how to fetch json data using jquery with handlebars不知道如何使用带有把手的 jquery 获取 json 数据
【发布时间】:2014-10-27 19:17:40
【问题描述】:

您好,我是 JSON 的新手,大家都说 JavaScript 模板引擎用于前端动态更改,但我无法继续帮助我

json 文件 data.json

    {
    users: [{
        username: "alan",
        firstName: "Alan",
        lastName: "Johnson",
        email: "alan@test.com"
    }, {
        username: "allison",
        firstName: "Allison",
        lastName: "House",
        email: "allison@test.com"
    }, {
        username: "ryan",
        firstName: "Ryan",
        lastName: "Carson",
        email: "ryan@test.com"
    }]
}

通过在 jquery 中使用 get 方法,我得到了 json 文件的响应

 $(function() {
    var raw_template = $('#entry-template').html();
    var template = Handlebars.compile(raw_template);
    var placeHolder = $("#3cols");
    $.get("js/data.json", function(datas, status, xhr) {
        $.each(datas, function(key, val) {
            var html = template(val);
            placeHolder.append(html);
        });
    });
})

我的模板就像

    <script id="entry-template" type="text/x-handlebars-template">          
     {{#each users}}
              <div class="col-md-4">
                <h2>{{username}}</h2>
                <p>{{firstName}}</p>
                <p><a href="">{{email}}</a>
                </p>
              </div>
        {{/each}}
    </script>

我想添加数据

 <div id="3cols" class="row"></div>

不知道发生了什么屏幕上没有显示,但在控制台中我得到来自 json 的响应但没有输出

【问题讨论】:

    标签: jquery json handlebars.js each


    【解决方案1】:

    使用该 JSON 和该模板,我认为模板中的 #each 已经遍历您的用户,因此您无需在 Javascript 中单独使用 .each() 执行此操作。我建议将您的 JS 更改为:

    $(function() {
        var raw_template = $('#entry-template').html();
        var template = Handlebars.compile(raw_template);
        var placeHolder = $("#3cols");
        $.get("js/data.json", function(datas, status, xhr) {
            var html = template(datas);
            placeHolder.append(html);
        });
    });
    

    如果还是不行,那么我们需要看看datas到底是什么。您可以在执行 template(datas) 之前添加 console.log(datas),这样我们就可以准确地看到您发送到模板的内容。

    【讨论】:

    • 控制台日志没有显示任何东西.. :( console.log("datas" +datas);
    • @Woverine - “什么都不显示”是什么意思?你的意思是它不会被执行? datas 中有什么内容?顺便说一句,"datas"+datas 不会显示你想看的内容。那可能只会向您显示“对象对象”。你需要做一个普通的console.log(datas)才能看到datas的实际内容。
    • 控制台仅显示 GET http://localhost:8888/handlebars/js/data.json 200 OK 1ms jquery.js (line 9666) 没有其他内容
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-04
    • 2011-09-24
    • 2018-10-30
    • 1970-01-01
    • 1970-01-01
    • 2015-12-07
    相关资源
    最近更新 更多