javascript - 无法检索 json 数据

标签 javascript jquery json jsonp

我正在尝试获取 json 数据,但无法这样做。我正在尝试获取特定城市的天气数据。这是我的 json 数据

{ 
"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" 
        } 
    ] 
}
}

这是我尝试使用 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);
        });

请帮忙。我怎样才能实现它?上面的代码对我不起作用。

错误是什么

object is undefined
length = object.length,                                   jquery-latest.js (line 630) 

我想获取天气对象内的数据。我怎样才能得到它?

好的,这是我取消注释 console.log enter link description here 时的输出图像

最佳答案

您的问题是嵌套的“each”循环。您告诉 jQuery 响应的 data 对象中的每个对象,找到其中的每个 weather 对象并对其进行迭代。只有一个 weather 对象,并且它直接位于 data 内部,因此请删除外部循环并使用此单个循环进行简化:

$.each(w.data.weather, function(i, res) {        
    contents += "<section>" + res.tempMaxC + "</section>";
});

总而言之,你已经非常接近了。这是a working fiddle of your code随着微小的变化。

关于javascript - 无法检索 json 数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8770666/

相关文章:

javascript - 单击按钮切换 Font Awesome 类

javascript - 在 js 中设置背景颜色 + 不透明度,除了按钮

jquery - 设置右拉后,按钮下拉菜单在移动设备上不起作用

java - 网络.sf.json.JSONException : There is a cycle in the hierarchy

java - 为 java.util.Maps 自定义 Jersey JSON 编码

javascript - RN 渲染 View 但显示白色空白屏幕

javascript - 如何验证一个整数是否是JavaScript中的有效日期?

php - json 字符串化为 php

javascript - setInterval 触发过于频繁 (Javascript)

javascript - HTML 在事件时设置轮播图像 src