Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/430.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/79.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
访问jQuery文档中的JavaScript变量。ready()_Javascript_Jquery_Function - Fatal编程技术网

访问jQuery文档中的JavaScript变量。ready()

访问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

我想访问变量lat和var lng,如下面的代码所示。请建议我访问.load中这些变量的正确方法

 $(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
上有一个不一致的地方-你可能把它复制到你的代码中了吗?