2012-03-20 21 views
3

的第一個項目我有一個JSON對象是這樣的:

{ 
    "mesta": [ 
     { 
      "latlng": [49.094046,15.893415], 
      "nazev": "Město Jaroměřice nad Rokytnou" 
     }, 
     { 
      "latlng": [49.44119,18.09461], 
      "nazev": "Obec Vidče" 
     }, 
     { 
      "latlng": [49.5047,17.10139], 
      "nazev": "Obec Smržice" 
     } 
    ], 
    "orp": [ 
     { 
      "latlng": [49.2156,15.87819], 
      "nazev": "Město Třebíč (ORP)" 
     }, 
     { 
      "latlng": [49.457623,18.142622], 
      "nazev": "Město Rožnov pod Radhoštěm (ORP)" 
     } 
    ] 
} 

當我嘗試遍歷對象,我只在警告得到第一個項目(MESTA)。根據jsonlint的語法是正確的。我錯過了什麼嗎?

function loadMarkers() { 
    $.getJSON('data.json', function(data) { 

     $.each(data,function(index,obj) { 
       alert(index); 
     }); 
    }); 
} 
+2

爲我工作: http://jsbin.com/usakic – 2012-03-20 10:10:32

+0

假設*是* JSON響應,[這應該工作正常](http://jsfiddle.net/TzqMA/)。你確定**這是*完全*服務器返回的是什麼? – Matt 2012-03-20 10:10:49

+1

適用於我:http://jsfiddle.net/bFFyL/。重新檢查返回的對象。 – jgauffin 2012-03-20 10:11:26

回答

0

問題是來自服務器,而不是您的JavaScript的響應。我跑在控制檯下面的代碼在頁面上:

$.getJSON('data.json', function(data) { 
    console.log(data); 
}); 

結果是這樣的:

enter image description here

正如你所看到的,只有一個屬性(mesta,使用數組三個元素)在返回的對象中。

您可以通過visiting the data.json file directly進行確認。

+0

哦,我的,我使用了錯誤的JSON文件: - /我的道歉! – 2012-03-20 10:22:21

0

問題不在於你的JSON對象或$。每個功能我能遍歷這兩個鍵在這裏http://jsfiddle.net/d4udts/N2C3j/

問題上面的數據似乎與你的getJSON調用,我懷疑你的調用返回只有第一個元素你調試的代碼,看看是什麼是該調用獲取的json數據

+0

我跑了你的網站,我得到了兩個鍵的響應和你的迭代器也打印在你的控制檯似乎罰款給我檢查與螢火蟲 – Deepu 2012-03-20 10:29:13

+0

我想那麼你的問題是與鉻瀏覽器您的代碼在Firefox中工作正常,並返回兩個鍵mesta和orp – Deepu 2012-03-20 10:34:07

0

您正在選擇具有對象數組的每個對象。

解決方案可能會是你把每一個在每個或不使用jQuery.each 但一個簡單的像......(asuming返回的對象被稱爲數據)

for(obj in data){ 
    for(entry in data[obj]){ 
    { 
     console.log(entry) 
     .... 
    } 
}