2013-10-04 5 views
-2

Я пытаюсь выполнить цикл через объект json в первый раз, все, что я хочу сделать, это перечислить все содержимое переменной temp, но я не могу понять, как работать с циклом.цикл через JSON с использованием jquery

$("button").click(function(){ 
var url = "http://api.openweathermap.org/data/2.5/forecast?lat=53.7&lon=0.3&callback=?" ; 
$.getJSON(url, function(res) { 

    $('#result').html('<p>lon: ' + res.city.coord.lon + '</p>'); 
    $('#result').append('<p>lat: ' + res.city.coord.lat + '</p>'); 
    $('#result').append('<p>wind: ' + res.wind.speed + '</p>'); 

     $.each(res.list.main, function(i, temp) { 
      $('#result').append('<p>temp: ' + temp[i] + '</p>'); 
     }); 
}); 

});

+7

'temp' - это значение, не нужны скобки' [] ' –

+0

, что вы пытались определить, что происходит во время вашего обратного вызова $ .each? –

ответ

1

Вы должны действительно console.log свой объект и выяснить структуру.

Нет res.wind.speed в этом объекте в том месте, где вы думаете.

Вот краткий обзор вашего объекта ->http://jsfiddle.net/t2KMk/1/

обратите внимание, что list представляет собой массив объектов различного времени и т.д., содержащих такие вещи, как ветер, облака, дождь, основной и т.д.

Вот пример того, как перебрать эти значения, получая ветер

$("button").click(function(){ 
    var url = "http://api.openweathermap.org/data/2.5/forecast?lat=53.7&lon=0.3&callback=?"; 

    $.getJSON(url, function(res) { 
     $('#result').html('<p>lon: ' + res.city.coord.lon + '</p>'); 
     $('#result').append('<p>lat: ' + res.city.coord.lat + '</p>'); 

     $.each(res.list, function(i, temp) { // iterate the array 

      $('#result').append('<p>wind: ' + temp.wind.speed + '</p>'); 
            //    ^^^ here you have wind 
     }); 
    }); 
}); 

FIDDLE

Смежные вопросы