Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/76.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如果JSON对象位于嵌套数组中,如何使用Mustache.js?_Javascript_Jquery_Templates_Mustache - Fatal编程技术网

Javascript 如果JSON对象位于嵌套数组中,如何使用Mustache.js?

Javascript 如果JSON对象位于嵌套数组中,如何使用Mustache.js?,javascript,jquery,templates,mustache,Javascript,Jquery,Templates,Mustache,我听说了胡子的妙处,决定试试看 我正试图弄清楚如何在jQuery中使用Mustache模板。我已经找了几天了 小胡子可以在这里找到: 以下是我的尝试: $.getJSON('get_fullname.asp', {name: 'johnny'}, function(data, status, xhr) { var template = '<h1>{{NAME}}</h1><p>test</p>'; strHTML = Mustac

我听说了胡子的妙处,决定试试看

我正试图弄清楚如何在jQuery中使用Mustache模板。我已经找了几天了

小胡子可以在这里找到:

以下是我的尝试:

$.getJSON('get_fullname.asp', {name: 'johnny'}, function(data, status, xhr) {

    var template = '<h1>{{NAME}}</h1><p>test</p>';
    strHTML = Mustache.to_html(template, data);
    $('#container').html( strHTML );

});

我遗漏了什么?

乍一看,您的JSON对象似乎嵌套在一个数组中。移除它周围的[],然后查看它是否工作。您可以在服务器级别(我推荐)或在javascript中通过调用:

strHTML = Mustache.to_html(template, data[0]);
而不是:

strHTML = Mustache.to_html(template, data);

作为一种良好的做法,如果您没有打印数组,服务器不应该从您的请求中返回该数组

即使它被序列化为JSON,为了得到这个结果,源结构必须类似于对象的数组或(像PHP中的)关联数组

如果您真正想要的是打印一个姓名列表,那么您应该在“.”上迭代,就像在这把小提琴中一样:

{{}
  • {{last}},{{name}
  • {{/.}}

    它只为一个名称生成相同的结果,但在获得更多名称时会扩展列表。

    嗨,Gazler,是的,这很有效!不推荐嵌套JSON对象吗?嵌套对象不是问题。您的示例嵌套在一个数组中,这就是您的示例不起作用的原因。如果您确实希望嵌套数组(列表)或对象,请查看文档中的“取消引用部分”部分。谢谢!我已经干了两天了!我的json是由coldfusion生成的。我试图删除cf中的外括号,但没有成功,因此我在js中使用了数据[0]。谢谢@Gazler@Gazler您还可以执行
    var str=Mustache.to_html(模板,data.pop())以获得更优雅的解决方案:)
    
    strHTML = Mustache.to_html(template, data);
    
    {{#.}}
    <li>{{last}}, {{name}}.</li>
    {{/.}}