2013-10-26 70 views
0

我在理解這個問題時遇到了問題。爲了測試目的,我在一個名爲list.json的文件中包含這個json。稍後我會得到由服務器生成的這個列表。使用jQuery從JSON創建動態嵌套列表

[ 
{ 
    name : "ABC", 
    id  : "link_abc" 
}, 
{ 
    name : "DEF", 
    id  : "link_def" 
}, 
{ 
    name : "GHI", 
    id  : "link_ghi" 
}, 
{ 
    name : "JKL", 
    id  : "link_jkl" 
} 

] 

這裏是我的javascript顯示在<li>格式的列表。

$(function(generate_list_from_JSON){ 
$('a[href="#state"]').click(function(){ 
    $.getJSON("scripts/list.json", function (obj){ 
     $.each(obj.name, function (key, value){ 
      alert(key); 
      }) 
     }); 
    }); 
}); 

問題是,即使在控制檯中也沒有任何顯示。我如何捕獲正在發送的內容和正在接收的內容?我試過console.log()但仍然空白。

+0

您是否嘗試過每一行開發人員控制檯中的設置調試斷點?這會告訴你哪件作品不具有預期的效果。 – Corey

+0

使用jsonlint.com來驗證您的json – charlietfl

回答

2

JSON需要在屬性名稱周圍加引號。所以你需要這樣做:

[ 
{ 
    "name" : "ABC", 
    "id"  : "link_abc" 
}, 
... 
] 

JavaScript對象不需要引用屬性名稱,但JSON會。

HTH

+0

這個解決了這個問題。我可以訪問屬性,但正如@Corey所說,我不能爲數組做每一個。我會在一段時間後發現。感謝一堆傢伙! – rolodex

1

我看到幾個問題:

  • 你的JSON對象無效。它是一個對象數組,但前兩個對象不以,分開,並且應引用JSON中的字符串。
  • 在你的javascript代碼中,你指的是obj.users,而你的對象,即使它有,,根本沒有用戶。
+0

好的。我已經更新了我的問題。關於你的評論。但仍然沒有。 – rolodex

+0

@rolodex仍然沒有定義obj.name ...使用'.each(obj,function(i,o){console.log(o.name)})'並引用json中的索引。 –

1

你不能在obj.name上做每一個。 obj是一個數組。數組沒有名爲「name」的屬性,因此您將永遠不會進入循環。

通過obj [0]循環到obj [obj.length-1]。