访问jQuery文档中的JavaScript变量。ready()
我想访问变量lat和var lng,如下面的代码所示。请建议我访问.load中这些变量的正确方法访问jQuery文档中的JavaScript变量。ready(),javascript,jquery,function,Javascript,Jquery,Function,我想访问变量lat和var lng,如下面的代码所示。请建议我访问.load中这些变量的正确方法 $(document).ready(function(){ function getLocation() { if (navigator.geolocation) { navigator.geolocation.getCurrentPosition(showPosition); } else { x.innerHTML = "Geolocat
$(document).ready(function(){
function getLocation() {
if (navigator.geolocation) {
navigator.geolocation.getCurrentPosition(showPosition);
} else {
x.innerHTML = "Geolocation is not supported by this browser.";
}
}
function showPosition(position) {
var lat= position.coords.latitude;
var lng= position.coords.longitude;
}
$(".content").load("page1.php?latitude="+lat+"&longitude="+lng);
});
我想调用var-lat和var-lng,如下面代码所示。请建议我在.load函数中调用此变量的当前方法
getCurrentPosition
函数是异步的-稍后调用回调,并继续执行函数的其余部分
因此,对.load
的调用应该在showPosition
函数本身中进行
不要忘记,您还必须调用getLocation()
来启动整个过程
为了方便起见,我刚刚制作了一个未经测试的插件包装器,它将getCurrentLocation
调用转换为Promise接口:
(function($) {
$.geolocate = function(options) {
var def = $.Deferred();
if (navigator.geolocation) {
navigator.geolocation.getCurrentPosition(def.resolve, def.reject, options);
} else {
def.reject("location not available");
}
return def.promise();
};
})(jQuery);
用法:
$.geolocate().done(function(pos) {
// use pos here
var lat = pos.coords.latitude;
var lng = pos.coords.longitude;
...
}).fail(function(err) {
// 'err' is a PositionError object (if supported but not permitted)
// or a string if geolocation isn't even supported.
});
请参见您可以将它们上移到
.ready()
的范围:
$(document).ready(function(){
var lat;
var lng;
function getLocation() {
if (navigator.geolocation) {
navigator.geolocation.getCurrentPosition(showPosition);
} else {
x.innerHTML = "Geolocation is not supported by this browser.";
}
}
function showPosition(position) {
lat= position.coords.latitude;
lng= position.coords.longitude;
}
$(".content").load("page1.php?latitude="+lat+"&longitude="+lng);
});
为什么不把你的
$(“.content”).load
放在showPosition
函数中呢?首先,它看起来不像是在向你的showPosition()
函数传递position
对象。第二,尝试将$(“.content”).load()移动到showPosition()
函数中。@beercodebeer无需传递对象-他刚刚传递了一个函数引用,因此调用方将使用正确的参数自动调用该函数。是的,他的问题在我发表评论后不久被编辑,@Alnitak.Rocket Hazmat它在showPosition函数中也不起作用,这将解决参考错误,但是在加载()
之后,showPosition()
不会被调用为lat
和lng
赋值,非常正确。我误解了OP的问题。将调用移动到load()
内部showPosition()
就是答案。Alnitak我检查您的代码,但它不会将变量传递给.load。我在$.geologite()中使用.load().done(函数(pos){}funtion@user3719363我在pos
和position
上有一个不一致的地方-你可能把它复制到你的代码中了吗?