Javascript JS全局变量保持不变
我有两个全局变量,并将它们转换为一个函数,但它仍然显示为未定义Javascript JS全局变量保持不变,javascript,geolocation,Javascript,Geolocation,我有两个全局变量,并将它们转换为一个函数,但它仍然显示为未定义 var lat var long; function getLocation() { if (navigator.geolocation) { navigator.geolocation.getCurrentPosition(showPosition); } else { console.log("Geolocation is not supported by this
var lat
var long;
function getLocation()
{
if (navigator.geolocation)
{
navigator.geolocation.getCurrentPosition(showPosition);
} else
{
console.log("Geolocation is not supported by this browser.");
}
}
function showPosition(position)
{
lat = position.coords.latitude;
long = position.coords.longitude;
}
getLocation();
console.log(lat + " " + long);
我在这个网站上查过其他问题,但似乎没有一个答案。当我检查ShowPosition函数内部时,它会显示实际坐标。我是js新手,请帮忙
编辑:
我还有一个函数,我想在其中访问全局变量
function generate_list(params, fromPageLoad)
{
var ajax_url = jQuery('#ajax_post_url').val();
var data = { action: 'generate_list', latitude: lat, longitude: long };
var extended_data = jQuery.extend(data, params);
jQuery.ajax({
type: 'POST',
data: extended_data,
url: ajax_url,
success: function (data) {
//console.log(data);}
}
在加载带有动态参数的页面时调用此函数
我也试着让拉特朗回到showPosition,但它不起作用。“POST”或“GET”方法不返回坐标变量
function showPosition(position)
{
var ajax_url = jQuery('#ajax_post_url').val();
var lat = position.coords.latitude;
var long = position.coords.longitude;
jQuery.ajax({
type: 'POST',
data: { lat: lat,long: long },
url: ajax_url,
success: function(data)
{
}
});
console.log("Latitude: " + position.coords.latitude +
"Longitude: " + position.coords.longitude);
}
如果用户允许该位置,我想更改列表。geolocation.getCurrentPosition是异步API。尝试在函数showPositionposition内移动console.log。
很多(如果不是所有)带有回调的API都是异步的。外面要小心 回答你,亲爱的朋友
let lat;
let long;
navigator.geolocation.getCurrentPosition(success, null, {});
function success(pos) {
lat = pos.coords.latitude
long = pos.coords.longitude
console.log('lat =',lat)
console.log('long =',long)
}
您正在showPosition中更改它们,但调用getLocation,因此没有任何更改;getLocation正在调用showPositionFYI,中的最后一个示例使其完全重复。@deceze我撤销了以前的注释。此问题不包含任何问题。你说得对。我已经继续并删除了我的答案。在全局变量中存储数据不是在函数之间传递数据的方式Side showPosition正在工作,但我想将坐标传递给另一个函数,因此我将其分配给全局变量。只需在showPosition中调用函数?因为实际上全局变量已更改,因此,如果该函数在以后运行,它应该能够获得lat和long。如果它立即运行,则需要在showPosition中不幸的是,在加载页面时加载showPosition时,我无法将另一个函数添加到showPosition中。@如果可以从中分配全局变量,为什么不能从中调用其他代码?你必须以这样或那样的方式来做。以代码段的形式运行它不起作用。我想将lat,long传递给另一个函数,这就是为什么我需要全局变量中的值。这不管用。