Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/391.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 正在寻找解析帮助_Javascript_Json_Parsing - Fatal编程技术网

Javascript 正在寻找解析帮助

Javascript 正在寻找解析帮助,javascript,json,parsing,Javascript,Json,Parsing,这是“我的浏览器”中的视图: { "data": { "request": [{ "query": "Lat 41.85 and Lon -87.65", "type": "LatLon" }], "time_zone": [{ "localtime": "2012-02-14 16:05", "utcOffset": "-6.0"

这是“我的浏览器”中的视图:

{
    "data": {
        "request": [{
            "query": "Lat 41.85 and Lon -87.65",
            "type": "LatLon"
        }],
        "time_zone": [{
            "localtime": "2012-02-14 16:05",
            "utcOffset": "-6.0"
        }]
    }
}
现在,我使用以下代码对其进行解析:

function getTimeZone(latlong) {
    jQuery(document).ready(function ($) {
        $.ajax({
            url: "http://www.worldweatheronline.com/feed/tz.ashx?key=[removed]&q=" + latlong + "&format=json",
            dataType: "jsonp",
            success: function (parsed_json) {
                console.log(parsed_json.time_zone.utcOffset);
                return parsed_json.time_zone.utcOffset;
            },
            error: function (parsed_json) {
                //console.log("Error: " + parsed_json);
            }
        });
    });
}
每次运行代码时,都会出现以下错误:

Uncaught TypeError: Cannot read property 'utcOffset' of undefined
如蒙协助,将不胜感激

显示到控制台的数据视图(仅复制了我感兴趣的部分):

应该是

return parsed_json.data.time_zone[0].utcOffset;
您必须仔细查看返回的JSON结构。它有助于将其拆分为单独的行和缩进以反映嵌套。

return parsed_json.data.time_zone[0].utcOffset;

您必须仔细查看返回的JSON结构。它有助于将其拆分为单独的行并缩进以反映嵌套情况。

是否应该对其进行
分析\u json.data.time\u zone[0]。utcOffset

是否应该进行
分析\u json.data.time\u zone[0]。utcOffset

实际上,有两个问题:

1) 要访问内容,您需要:

已解析的_json.data.time_zone[0].utcOffset

2) 这有点复杂-您使用的是异步ajax回调-在程序完成发送ajax请求并返回之前,不会调用success(),并且它不会将结果返回给父方法

除非使用同步抓取(这是个坏主意,因为它会在响应到达之前锁定浏览器),否则基本上无法按您希望的方式执行

取而代之的是,将一个回调参数(将是函数)作为函数的参数,并在其到达后调用该参数,结果如下:

i、 e

然后使用它:

getTimeZone(myLatLong, function(latLong, utcOffset) {
   // ... do something with utcOffset here ...
});

事实上,有两个问题:

1) 要访问内容,您需要:

已解析的_json.data.time_zone[0].utcOffset

2) 这有点复杂-您使用的是异步ajax回调-在程序完成发送ajax请求并返回之前,不会调用success(),并且它不会将结果返回给父方法

除非使用同步抓取(这是个坏主意,因为它会在响应到达之前锁定浏览器),否则基本上无法按您希望的方式执行

取而代之的是,将一个回调参数(将是函数)作为函数的参数,并在其到达后调用该参数,结果如下:

i、 e

然后使用它:

getTimeZone(myLatLong, function(latLong, utcOffset) {
   // ... do something with utcOffset here ...
});


结果:对象数据:对象请求:数组[1]时区:数组[1]0:Object localtime:“2012-02-14 16:39”utcOffset:“-6.0”看起来接收到了正确的数据。在Chrome/FF+Firebug中,JS控制台中有一个漂亮的嵌套树显示,因此,您可以浏览对象并更好地了解其结构。我发布的内容是Chrome控制台显示的内容。然后:返回已解析的_json.data.time_zone[0]。utcOffset应该可以工作,它只是告诉您它是一个1长度的数组,请尝试添加:console.log(“%o”,已解析的_json.data.time_zone[0]。utcOffset);这应该会显示utc字符串,表明它在json层次结构中的导航结果:对象数据:对象请求:数组[1]时区:数组[1]0:Object localtime:“2012-02-14 16:39”utcOffset:“-6.0”看起来像是在接收正确的数据。在Chrome/FF+Firebug中,JS控制台中有一个漂亮的嵌套树显示,因此,您可以浏览对象并更好地了解其结构。我发布的内容是Chrome控制台显示的内容。然后:返回已解析的_json.data.time_zone[0]。utcOffset应该可以工作,它只是告诉您它是一个1长度的数组,请尝试添加:console.log(“%o”,已解析的_json.data.time_zone[0]。utcOffset);这应该显示utc字符串,表明它在json层次结构中的导航似乎没有帮助。我没有添加[0]的原因是我没有进行循环。这有关系吗?时区的值是一个对象数组,在您的示例中只有一个对象,因此其索引为0,应该指定。这似乎没有帮助。我没有添加[0]的原因是我没有进行循环。这有关系吗?时区的值是一个对象数组,在您的示例中只有一个对象,因此其索引为0,应该指定。这似乎没有帮助。我没有添加[0]的原因是我没有进行循环。那有关系吗?不知道如何分解它,因为这是我从提供程序返回的JSON,我无法编辑任何内容。这是因为'time_zone'元素以数字索引数组的形式返回,因此需要[0]从中选择第一个元素-我假设这意味着提供程序可以在响应中提供多个时区,但是如果您只需要第一个,那么应该可以。有没有办法找到其中一个值的数据类型?好的,您可以使用JavaScript
typeof
操作符。用JavaScript获取这些信息可能有点令人沮丧;如果您有一些特定的需求需要解决一些问题,那么在这个主题上发布一个单独的问题可能是一个好主意。这看起来像是一个时间问题,而不是类型不匹配…现在要想弄清楚如何正确使用回调函数…似乎没有什么帮助。我没有添加[0]的原因是我没有进行循环。那有关系吗?不知道如何分解它,因为这是我从提供程序返回的JSON,我无法编辑任何内容。这是因为'time_zone'元素以数字索引数组的形式返回,因此需要[0]从中选择第一个元素-我假设这意味着提供程序可以在响应中提供多个时区,但是如果您只需要第一个,那么应该可以。有没有办法找到其中一个值的数据类型?好的,您可以使用JavaScript
typeof
操作符。用JavaScript获取这些信息可能有点令人沮丧;如果您有一些特定的需求需要解决一些问题,那么在该主题上发布一个单独的问题可能是一个好主意。这看起来像是一个时间问题,而不是类型不匹配…现在来了解如何正确使用回调函数。。。