我目前正在编写一个简短的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数据并避免错误?
这是一个愚蠢的错误,但有时会吸引我们所有人。因为您的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;