基于从@rkosegi获得的帮助,我尝试通过js.fiddle运行页面和javascript进行测试,但无法在测试页面上显示任何结果。我在MS Edge中运行页面检查时没有错误。
我已检查并再次检查,但找不到导致数据无法显示的错误。我想念的是什么?
$.getJSON("https://<username>:<password>@api.meteomatics.com/todayT05:00Z--today+2DT05:00Z:PT24H/wind_speed_10m:kmh/40.014994,-73.811646/json",
function(data) {
console.log(data);
var mtwnsd24 = data.data[0].coordinates[0].dates[1].value;
$(".mtwnsd24").append(mtwnsd24);
});
<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="meteomatics.js"></script>
</head>
<body>
<p class="mtwnsd24"></p>
</body>
API可以正常工作,但是您不能像尝试那样通过URL传递身份验证,而是set the auth via headers。使用fetch
for example看起来像:
fetch
正如其他人提到的那样,存在CORS问题,因此您需要从服务器/代理请求API。我通过Postman进行了尝试,并在注册后成功获得了API的响应。
运行您的代码片段,检查请求:未找到meteomatics.js,404,并且无提示失败...所以它也许是一个远程脚本,您应该填写URL?
var headers = new Headers();
headers.append('Authorization', 'Basic ' + btoa(username + ':' + password));
fetch("https://api.meteomatics.com/todayT05:00Z--today+2DT05:00Z:PT24H/wind_speed_10m:kmh/40.014994,-73.811646/json", {headers: headers})
关于请求本身,也许您应该使用JSONP请求,因为如果未设置CORS标头,则这是合理的选择。您可以启用JSONP将回调参数添加到url(在<script src="[**COMPLETE URL HERE**]meteomatics.js"></script>
处检查JSONP)