2013-10-28 81 views
0

我完全被$ .getJSON函數搞糊塗了!

$.getJSON('http://api.worldweatheronline.com/free/v1/weather.ashx?key=mykey&q=' + lat + ',' + longi + '&fx=no&format=json', function(data) { 
    $('#weather').html('<p> Humidity: ' + data.current_condition.humidity  + '</p>'); 
    $('#weather').append('<p>Temp : ' + data.current_condition.temp_C   + '</p>'); 
    $('#weather').append('<p> Wind: ' + data.current_condition.windspeedMiles + '</p>'); 
}); 

這是該網址JSON是:

{ 
    "data":{ 
     "current_condition":[ 
     { 
      "cloudcover":"0", 
      "humidity":"82", 
      "observation_time":"04:07 PM", 
      "precipMM":"0.2", 
      "pressure":"997", 
      "temp_C":"11", 
      "temp_F":"52", 
      "visibility":"10", 
      "weatherCode":"356", 
      "weatherDesc":[ 
       { 
        "value":"Moderate or heavy rain shower" 
       } 
      ], 
      "weatherIconUrl":[ 
       { 
        "value":"http:\/\/cdn.worldweatheronline.net\/images\/wsymbols01_png_64\/wsymbol_0010_heavy_rain_showers.png" 
       } 
      ], 
      "winddir16Point":"WSW", 
      "winddirDegree":"240", 
      "windspeedKmph":"26", 
      "windspeedMiles":"16" 
     } 
     ], 
     "request":[ 
     { 
      "query":"Lat 51.24 and Lon -1.15", 
      "type":"LatLon" 
     } 
     ] 
    } 
} 

它必須是與我的語法!

+1

這不是JSONP。 – SLaks

+1

在您的JSON數據中'current_condition'是一個對象數組,您可以使用相應的索引來獲取值,否則該值將是未定義的。 嘗試類似'data.current_condition [0] .humidity'而不是'data.current_condition.humidity'。 – super

+1

要考慮的另一件事是,因爲根是'{'data':yatta}''你可能需要引用像'data.data.current_condition [0]' –

回答

0

試試這個:

$.getJSON('http://api.worldweatheronline.com/free/v1/weather.ashx?key=mykey&q=' + lat + ',' + longi + '&fx=no&format=json&callback=?', function (data) { 
    $('#weather').html('<p> Humidity: ' + data.data.current_condition[0].humidity + '</p>'); 
    $('#weather').append('<p>Temp : ' + data.data.current_condition[0].temp_C + '</p>'); 
    $('#weather').append('<p> Wind: ' + data.data.current_condition[0].windspeedMiles + '</p>'); 
}); 

因爲current_condition是一個對象數組,你可以通過使用它的索引來訪問它。添加數據屬性,因爲您的JSON本身包含數據對象。

+0

這樣的嵌套數據非常感謝! – GeorgeTaylor

1

嘗試通過callback=?的回調函數,使用JSONP格式

$.getJSON('http://api.worldweatheronline.com/free/v1/weather.ashx?key=mykey&q=' + lat + ',' + longi + '&fx=no&format=json&callback=?', function (data) { 
    $('#weather').html('<p> Humidity: ' + data.current_condition.humidity + '</p>'); 
    $('#weather').append('<p>Temp : ' + data.current_condition.temp_C + '</p>'); 
    $('#weather').append('<p> Wind: ' + data.current_condition.windspeedMiles + '</p>'); 
});