Javascript 如果JSON对象位于嵌套数组中,如何使用Mustache.js?
我听说了胡子的妙处,决定试试看 我正试图弄清楚如何在jQuery中使用Mustache模板。我已经找了几天了 小胡子可以在这里找到: 以下是我的尝试: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
$.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>
{{/.}}