2013-03-30 51 views
0

我仍然忙于尝试将JSON文件设置为HTML网站。因此,如果json更改了动态加载的HTML。到目前为止,我能够检索内容,甚至请求一些内容。但不是我想要的所有东西,因为来自JSON的标记有点奇怪。Mustache.js迭代所有数组

由于跨站点保护,我无法直接执行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),你看到的情节的阵列具有带只是数字另一个阵列之间的一个很好的说明。我怎样才能创建像

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

您可以使用辅助把手如无定型在this answer

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; 
}); 
+0

您好,感谢您对这个答案。你可以告诉我,如果我想迭代,我必须在这个帮助者中更改:http://trendico.ru/api/moviebox/get_tv_data?id=1&season=1?我仍然需要相同的数据,但似乎情节是嵌套的。 – Senaxx

+0

情节似乎是相同的格式,请查看[小提琴](http://jsfiddle.net/SzAxf/2/)。我刚刚用新链接中的数据替换了剧集。 –

+0

谢谢。这意味着如果我使用整个JSON作为输入,我可以使用这个模板?我尝试替换这个http://jsfiddle.net/SzAxf/3/小提琴中的JSON。但是到目前为止没有运气:( – Senaxx