I am trying to get json data but I am not able to do so. I am trying to get weather data for a specific city. Here is my json data
{
"data":
{
"current_condition":
[
{
"cloudcover": "100",
"humidity": "100",
"observation_time": "01:07 PM",
"precipMM": "0.2",
"pressure": "993",
"temp_C": "-6",
"temp_F": "21",
"visibility": "10",
"weatherCode": "368",
"weatherDesc":
[
{
"value": "Light snow showers"
}
],
"weatherIconUrl":
[
{
"value": "http:\/\/www.worldweatheronline.com\/images\/wsymbols01_png_64\/wsymbol_0027_light_snow_showers_night.png"
}
],
"winddir16Point": "N",
"winddirDegree": "360",
"windspeedKmph": "9",
"windspeedMiles": "6"
}
],
"request":
[
{
"query": "Tampere, Finland",
"type": "City"
}
],
"weather":
[
{
"date": "2012-01-07",
"precipMM": "2.3",
"tempMaxC": "-4",
"tempMaxF": "25",
"tempMinC": "-8",
"tempMinF": "17",
"weatherCode": "326",
"weatherDesc":
[
{
"value": "Light snow"
}
],
"weatherIconUrl":
[
{
"value": "http:\/\/www.worldweatheronline.com\/images\/wsymbols01_png_64\/wsymbol_0011_light_snow_showers.png"
}
],
"winddir16Point": "NNW",
"winddirDegree": "336",
"winddirection": "NNW",
"windspeedKmph": "9",
"windspeedMiles": "5"
},
{
"date":
"2012-01-08",
"precipMM": "0.0",
"tempMaxC": "-7",
"tempMaxF": "19",
"tempMinC": "-9",
"tempMinF": "17",
"weatherCode": "116",
"weatherDesc":
[
{
"value": "Partly Cloudy"
}
],
"weatherIconUrl":
[
{
"value": "http:\/\/www.worldweatheronline.com\/images\/wsymbols01_png_64\/wsymbol_0002_sunny_intervals.png"
}
],
"winddir16Point": "SSE",
"winddirDegree": "148",
"winddirection": "SSE",
"windspeedKmph": "5",
"windspeedMiles": "3"
}
]
}
}
and here is how I am trying to get it using jquery
var container = $('.weatherContainer');
var url = 'http://free.worldweatheronline.com/feed/weather.ashx?q=Tampere&format=json&num_of_days=2&key=a84523bbed133415120701&callback=?';
$.getJSON(url, function(w) {
//console.log(w.data);
var contents = "<div class='c'>";
$.each(w.data, function(i, res){
//alert('h');
$.each(res.weather, function(j,action) {
//alert('i');
contents += "<section>" + action.tempMaxC + "</section>";
});
});
contents += "</div>";
container.append(contents);
});
Help please. How can I achieve it? Above code doesnt work for me.
Here what the error is
object is undefined
length = object.length, jquery-latest.js (line 630)
I want to get the data inside the weather object. How can I get that?
Ok here is the image of output when I uncomment console.log enter link description here
Your problem is your nested “each” loops. You are telling jQuery for each object in the response’s
dataobject, find eachweatherobject inside of those and iterate over it. There is only oneweatherobject and it’s directly inside ofdata, so remove the outer loop and simplify with this single loop:All in all, you were pretty close. Here’s a working fiddle of your code with the minor change.