2012-03-20 2 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)" 
     } 
    ] 
} 

Когда я пытаюсь итерацию над объектом, я получаю только первый пункт (města) по тревоге. Согласно jsonlint, синтаксис верен. Я что-то упускаю?

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

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

работает для меня: http://jsbin.com/usakic –

+0

Предполагая, что * есть * ответ JSON, [это должно работать нормально] (http://jsfiddle.net/TzqMA/). Вы уверены, что это точно, что возвращается сервером? – Matt

+1

Работает для меня: http://jsfiddle.net/bFFyL/. doublecheck возвращенный объект. – jgauffin

ответ

0

Проблема - это ответ с сервера, а не ваш JavaScript. Я побежал следующий код в консоли на странице:

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

Результат выглядит следующим образом:

enter image description here

Как вы можете видеть, есть только одно свойство (mesta, массив с три элемента) в возвращаемом объекте.

Вы можете подтвердить это по visiting the data.json file directly.

+0

Ой, я использовал неправильный файл JSON: -/Извиняюсь! –

0

Проблема не с объектом JSON или $ .each функцией я смог перебрать оба ключа в приведенных выше данных здесь http://jsfiddle.net/d4udts/N2C3j/

рассмотрен вопросом, кажется, с вашей getJSON называть я сомневаюсь, что ваши возвращения вызова только первый элемент вы отлаживали код и смотрели, какие извлекаемые данные json для вызова

+0

Я запустил сайт ur, и я получил два ключа в ответе, и ваш итератор также печатает как в консоли ур, кажется, мне хорошо проверить с firebug – Deepu

+0

Я предполагаю, что ур проблема с хром браузером ваш код отлично работает в firefox и возвращает два ключа mesta и orp – Deepu

0

Вы выбираете каждый объект, у которого есть массив объектов.

решение, вероятно, будет то, что вы положили каждый в каждом или не использовать jQuery.each но простая монету ... (asuming возвращенного объекта называется данные)

for(obj in data){ 
    for(entry in data[obj]){ 
    { 
     console.log(entry) 
     .... 
    } 
} 
Смежные вопросы