属性路径可用于在javascript中定义变量

问题描述 投票:0回答:1

我目前正在编写一个简短的JavaScript,以从WorldWeather在线调用给定坐标的JSON数据。目前,我只是试图调用一个基准,然后再尝试详细说明。我已经通过邮递员运行了我的API URL,并且存在数据。我的javascript是main.js,并在html中引用。这是我的HTML

<!DOCTYPE html>
    <html lang="en">
   <head>
    <meta http-equiv="X-UA-Compatible" content="IE=Edge"/>
    <meta charset="utf-8"/>
   <title>API TEST</title>
    <script src="https://code.jquery.com/jquery-3.4.1.js"
     integrity="sha256-WpOohJOqMqqyKL9FccASB9O0KwACQJpFTUBLTYOVvVU="
     crossorigin="anonymous"></script>
   <script src="main.js"></script>
  </head>
  <body>
   <div>
     <p class="wvht"></p>
   </div>
  </body>

这是我的JS:

$.getJSON("https://api.worldweatheronline.com/premium/v1/marine.ashx? 
 key=c45390b6209242f4941174356200201&format=json&q=40.014994,-73.811646",
     function(data){
     console.log(data);

var wvht = data.weather[4].hourly[3].swellHeight_ft;

$(".wvht").append(wvht);
   }
);

我正在尝试调用膨胀高度数据(swellheight_ft),并使用Google DevTools中提供的路径来定义wvht var。运行脚本时,我的console.log(data)信息很好,但也收到以下错误

Uncaught TypeError: Cannot read property '4' of undefined
at Object.success (main.js:5)
at fire (jquery-3.4.1.js:3291)
at Object.fireWith [as resolveWith] (jquery-3.4.1.js:3421)
at done (jquery-3.4.1.js:9533)
at XMLHttpRequest.<anonymous> (jquery-3.4.1.js:9785)
 main.js:5 Uncaught TypeError: Cannot read property '4' of undefined

其中属性'4'指向数组。为了获取数据,我必须向下钻取天气数组(7个项)和每小时数组(8个项),以获取“ swellheight_ft”。我正在天气列表中寻找第4天,在小时列表中寻找第3小时。

是否有更好的方法来获取所需的swellheight_ft数据并避免错误?

javascript getjson
1个回答
0
投票

这是一个愚蠢的错误,但有时会吸引我们所有人。因为您的JSON开头为:

{"data":

并且您的变量也命名为data,您忘记了需要首先访问JSON的.data部分,因此只需进行更改

var wvht = data.weather[4].hourly[3].swellHeight_ft;

to

var wvht = data.data.weather[4].hourly[3].swellHeight_ft;
© www.soinside.com 2019 - 2024. All rights reserved.