我听过很多关于胡子的事情,并决定尝试一下。
我试图找出如何使用jQuery的Mustache模板。我一直在寻找几天。
可以在这里找到胡子:https://github.com/janl/mustache.js/
这是我的尝试:
$.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数据返回[{"NAME":"John","MIDDLE":"A","LAST":"Smith"}]
我得到的只是<p>test</p>
。
我也尝试过使用此模板但仍然获得<p>test</p>
。
var template = '{{#NAME}}<h1>.</h1>{{/NAME}}<p>test</p>';
我错过了什么?
答案 0 :(得分:8)
乍一看,您的JSON对象似乎嵌套在一个数组中。删除它周围的[]然后查看它是否有效。您可以在服务器级别(我推荐)或在javascript中通过调用:
执行此操作strHTML = Mustache.to_html(template, data[0]);
而不是:
strHTML = Mustache.to_html(template, data);
答案 1 :(得分:3)
作为一种好的做法,如果您不打印数组,服务器不应该从您的请求中返回该数组。
即使它被序列化为JSON,要获得此结果,源结构必须类似于对象的数组,或者(如在PHP中)一个关联数组的数组。
如果您真正想要的是打印名称列表,则应该迭代“。”就像在这个小提琴:http://jsfiddle.net/viniciuspires/3e5cs/
{{#.}}
<li>{{last}}, {{name}}.</li>
{{/.}}
只为一个名称产生相同的结果,但扩展名单时会获得更多名称。