gpt4 book ai didi

javascript - 无法使用全局变量作为 jQuery 函数的参数

转载 作者:行者123 更新时间:2023-11-28 05:34:19 25 4
gpt4 key购买 nike

我正在尝试使用 API 显示本地天气。 API url 根据用户的本地位置生成。

var lat,lon = null;
var key = "mykey";
var api = "";

function setApi(position){
lat = Math.round(position.coords.latitude*1000)/1000;
lon = Math.round(position.coords.longitude*1000)/1000;

api = "http://api.openweathermap.org/data/2.5/weather?lat=" + lat + "&lon=" + lon + "&appid=" + key;
}


navigator.geolocation.getCurrentPosition(setApi);

$.getJSON(api, function(data){
console.log(data.sys.country);
});

如果我使用 api 全局变量作为 $.getJSON 函数的参数,则问题不会发生。如果我使用字符串代替它就可以了。例如:

  $.getJSON("http://api.openweathermap.org/data/2.5/weather?lat=46.295&lon=30.648&appid=%mykey%", function(data){
console.log(data.sys.country);
});

最佳答案

我相信您遇到的问题是在调用 $.getJSON 时,实际的 api 值仍然设置为 "".

这可能是由 getCurrentPosition 中的异步操作引起的。这意味着 $.getJSON 实际上是在 setApi 回调函数之前调用的。

我建议根据您当前的代码,最简单的解决方案是将 $.getJSON 调用移到您的 setApi 函数中,这样您就可以确保仅在正确设置 api 值之后调用它。

例如:

var lat,lon = null;
var key = "mykey";
var api = "";

function setApi(position){
lat = Math.round(position.coords.latitude*1000)/1000;
lon = Math.round(position.coords.longitude*1000)/1000;

api = "http://api.openweathermap.org/data/2.5/weather?lat=" + lat + "&lon=" + lon + "&appid=" + key;

$.getJSON(api, function(data){
console.log(data.sys.country);
});
}

navigator.geolocation.getCurrentPosition(setApi);

关于javascript - 无法使用全局变量作为 jQuery 函数的参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39467275/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com