首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >不渲染JSON数据的胡须

不渲染JSON数据的胡须
EN

Stack Overflow用户
提问于 2018-05-29 08:36:04
回答 1查看 1.1K关注 0票数 1

所以,我刚刚开始使用Mustache JS。我有一个简单的html文件

代码语言:javascript
复制
<!DOCTYPE html>
<html lang="en">
<head>
    <title>JavaScript Mustache template</title>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <script src="https://code.jquery.com/jquery-3.2.1.min.js"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/mustache.js/2.3.0/mustache.min.js"></script>
</head>

<body>
    <script id="mp_template" type="text/template">
        <p>Country: {{ name }}</p>
        <p>Capital: {{ capital }}</p>
        <p>Flag: <img src={{{ flag }}} ></p>
    </script>
    <div id="mypanel"></div>
    <button id="btn">Load</button>
    <script>
        $(function () {
            $("#btn").on('click', function () {
                $.getJSON('https://restcountries.eu/rest/v2/name/aruba?fullText=true', function (data) {
                    var template = $("#mp_template").html();
                    var text = Mustache.render(template, data);
                    console.log(data);
                    $("#mypanel").html(text);
                });
            });
        });
    </script>

它通过.getJSON调用获取一些数据,然后尝试在单击按钮时呈现这些数据。没有正在呈现的数据。有人能告诉我我做错了什么吗?

请查看此URL以查看返回的数据https://restcountries.eu/rest/v2/name/aruba?fullText=true的结构

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-05-29 08:57:23

该API返回的是JSON数组,而不是对象,这就是它无法工作的原因。

如果你只想要第一项,你可以这样做:

代码语言:javascript
复制
 var template = $("#mp_template").html();
 var text = Mustache.render(template, data[0]);
 console.log(data);
 $("#mypanel").html(text);

或者,通过在对象属性{ countries: data }中传递数组并在模板中使用{{#countries}},可以遍历所有国家/地区

代码语言:javascript
复制
$(function () {
    $("#btn").on('click', function () {
        $.getJSON('https://restcountries.eu/rest/v2/name/aruba?fullText=true', function (data) {
            var template = $("#mp_template").html();
            var text = Mustache.render(template, { countries: data });
            $("#mypanel").html(text);
        });
    });
});
代码语言:javascript
复制
<!DOCTYPE html>
<html lang="en">
<head>
    <script src="https://code.jquery.com/jquery-3.2.1.min.js"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/mustache.js/2.3.0/mustache.min.js"></script>
</head>

<body>
    <script id="mp_template" type="text/template">
      {{#countries}}
        <p>Country: {{ name }}</p>
        <p>Capital: {{ capital }}</p>
        <p>Flag: <img src={{{ flag }}} style="width: 50px"></p>
      {{/countries}}
    </script>
    <div id="mypanel"></div>
    <button id="btn">Load</button>
</body>

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50574832

复制
相关文章

相似问题

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