2016-02-23 48 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模板可以理解它,並再次正常工作。