我的脚本中有2个函数。函数#1的目的是生成一个名为“mapsURL”的URL
第二个功能的目的是使用“mapsURL”
运行.ajax请求但是我在第二个函数中访问“mapsURL”时遇到问题。我在第一个函数中声明了“mapsURL”而没有“var”。根据我的理解,这应该使这个值成为全局值,我应该能够在其他函数中访问它。我的理解不正确还是我在这里缺少什么?
这是我的js:
注意:我删除了此帖子的API密钥,因此不是问题
$(document).ready(function (){
navigator.geolocation.getCurrentPosition(function (position) {
var positionLat = position.coords.latitude
var positionLon = position.coords.longitude
mapsURL = "https://maps.googleapis.com/maps/api/geocode/json?latlng=" + positionLat + "," + positionLon + "&key=***mykeygoeshere***";
});
function getData (){
$.ajax({
url: mapsURL,
dataType: 'json',
success: function(response){
console.log(response);
}
});
};
getData();
});
答案 0 :(得分:4)
getCurrentPosition
是异步的。它没有立即分配给mapsURL
,因此当您同步拨打getData
时,mapsURL
尚未填充。
您应该在getData
回调中调用getCurrentPosition
- 这也可以避免使用全局变量:
$(document).ready(function() {
navigator.geolocation.getCurrentPosition(function(position) {
var positionLat = position.coords.latitude
var positionLon = position.coords.longitude
var mapsURL = "https://maps.googleapis.com/maps/api/geocode/json?latlng=" + positionLat + "," + positionLon + "&key=***mykeygoeshere***";
getData(mapsURL);
});
function getData(mapsURL) {
$.ajax({
url: mapsURL,
dataType: 'json',
success: function(response) {
console.log(response);
}
});
}
});