我正在使用国家气象局警报API,它可以根据位置提供天气警报。不错的东西。我想缩小信息,只拉基于用户的地理位置,这是一个可行的选择和测试手动输入html地址,并结束它与纬度长。我试图通过获取它们的位置并将其添加到返回并在fetch行中使用的字符串中来自动化html构建过程。当我运行此命令时,控制台显示地址缺少lat long。
我没有尝试过太多的以外,因为我真的不知道另一种方法来做到这一点。
<body onLoad="loadAlerts()">
<p id="demo"></p>
<script>
function loadAlerts() {
fetch(alertDataForUserLocation)
.then(response => response.json())
.then(data => {
console.log(data) // Prints result from `response.json()` in getRequest
})
.catch(error => console.error(error))
function alertDataForUserLocation() {
var lat = "";
var long = "";
if (navigator.geolocation) {
navigator.geolocation.getCurrentPosition(showPosition);
} else {
alert("Geolocation needs to be enabled for this site.");
}
return "https://api.weather.gov/alerts/active?point=?" + lat + "," + long;
}
function showPosition(position) {
lat = position.coords.latitude;
long = position.coords.longitude;
}
</script>
字符串
我的逻辑告诉我,fetch将调用函数alertDataForUserLocation()
,该函数将提供一个正确的html地址,并在末尾加上一个lat long。但这不是所显示的。下面是我得到的错误。
api.weather.gov/alerts/active?point=?,:1无法加载资源:服务器以状态400()响应
1条答案
按热度按时间6psbrbz91#
首先更新
showPosition
中的lat,long是不可能更新alertDataForUserLocation
中的lat,long的这不是JS中作用域的工作方式。你将不得不对你的代码进行一点重构。为了确保alertDataForUserLocation
返回正确的URL,请将return语句移到showPosition
中。你可以这样做:字符串
}
还要检查API端点是否正确。