2016-02-23 47 views
0

JSON对象我试图找出如何我可以创建将遍历一个JSON阵列由AJAX请求返回的剑道模板循环。下面是数据对象看喜欢:通过在剑道的JavaScript模板

用户列表:
testuser1
testuser2
testuser3

[{"Id":5, "CreatedBy":"testuser1"}, 
{"Id":6,"Archived":false,"CreatedBy":"testuser2"}, 
{"Id":7,"Archived":false,"CreatedBy":"testuser3"}] 

我想在Kendo template这里仅列出了CreatedBy场这样的

这里是我的尝试,它是不工作:

<ul> 
    # for (var i = 0; i < data.length; i++) { # 
      <li>#= data[i].CreatedBy #</li> 
    # } # 
</ul> 

我只是得到的不确定,不确定的,不确定的... 的列表,当我删除CreatedBy,只是做数据[I]我得到列出的每个字段中的每个字母。如何从数据对象访问实际的CreatedBy值?

+0

是您的对象数组,还是{data:[{},{},{}]}? – shole

+0

从AJAX请求返回的我的对象看起来完全如何,当我在警报中将其输出到浏览器时,我在帖子的顶部显示它。请看我刚刚发布的答案,我想我已经明白了,因为它正在工作。将json解析为JavaScript数组可帮助我更轻松地进行循环。 –

+0

很高兴你解决了你自己的问题:) 你是否将AJAX的dataType设置为JSON?在我看来,你的数据返回是一个字符串,但不是JSON。如果是这样的话,你可以设置请求的数据类型,这样你就不需要显式地解析JSON。 – shole

回答

1

我能够通过首先解析它来完成我想要的东西。如果其他人有更好的清洁方式,请让我知道。

<script id="myKendoTemplate" type="text/x-kendo-template"> 
    <ul style="list-style: none; padding: 0;"> 
     # var objList = $.parseJSON(data); # 
     # for (var i = 0; i < objList.length; i++) { # 
      <li>#= objList[i].CreatedBy #</li> 
     # } # 
    </ul> 
</script> 

如果有人有兴趣另一个更新的是,我发现这个在kendo window documentation。如果将dataType设置为json,则数据将由jQuery为您解析,并且不需要$ .parseJSON(data)行。

0

如所讨论的,这个问题是由于AJAX请求的数据类型。

默认情况下,返回的数据类型为字符串,它无法通过剑道模板解析。

在请求中明确指定了dataType: "json"之后,或者像OP自己的解析返回数据为JSON类型的答案一样,Kendo模板可以理解它,并再次正常工作。