我仍在忙于尝试将JSON文件设置为HTML网站。因此,如果json更改,则更改将在HTML中动态加载。到目前为止,我能够检索内容,甚至要求一些内容。但不是我想要的一切,因为JSON的标记有点奇怪。
由于跨站点保护,我无法直接执行JSOP请求,因此我通过一个小技巧解决了这个问题。我创建了一个简单的test.php:
这样我绕过了跨站点保护,一切运行良好。唯一的问题是我不能遍历我想要的所有数组。目前我正在使用以下脚本进行JSOP调用并获取数据。输出是<li></li>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8" />
</head>
<body>
<ul id="episodes">
</ul>
<script src="http://cdnjs.cloudflare.com/ajax/libs/mustache.js/0.7.0/mustache.min.js"></script>
<script src="http://ps3scenefiles.com/json/handlebars.js"></script>
<script src="http://cdnjs.cloudflare.com/ajax/libs/jquery/1.8.2/jquery.min.js"></script>
<script id="episodes-template" type="text/template">
<li>{{description}}</li>
</script>
<script>
$(function() {
$.getJSON('http://ps3scenefiles.com/json/test.php', function(data) {
var template = $('#episodes-template').html();
var info = Mustache.to_html(template, data);
$('#episodes').html(info);
});
});
</script>
</body>
</html>
但是当你打开JSON(http://ps3scenefiles.com/json/test.php)的链接时,你会看到Episodes数组有另一个只包含数字的数组。如何创建像
这样的列表Episode: 1
Id:13605 Active:true Lang:en Link: url
Id:16525 Active:true Lang:ru Link: url
Episode: 2
Id:14854 Active:true Lang:en Link: url
Id:19445 Active:true Lang:ru Link: url
所以要清楚,我怎么能做一个小胡子(或把手)模板,使它看起来像一个例子?
答案 0 :(得分:0)
您可以使用this answer
中提到的Handlebars帮助程序Here is a fiddle没有样式,打印出您期望的数据(不是所有字段)。
这是辅助函数 -
Handlebars.registerHelper('eachkeys', function(context, options) {
var fn = options.fn, inverse = options.inverse;
var ret = "";
var empty = true;
for (key in context) { empty = false; break; }
if (!empty) {
for (key in context) {
ret = ret + fn({ 'key': key, 'value': context[key]});
}
} else {
ret = inverse(this);
}
return ret;
});