Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/68.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
Javascript 如何将JQuery变量传递给全局变量_Javascript_Jquery_Ajax_Api_Google Maps - Fatal编程技术网

Javascript 如何将JQuery变量传递给全局变量

Javascript 如何将JQuery变量传递给全局变量,javascript,jquery,ajax,api,google-maps,Javascript,Jquery,Ajax,Api,Google Maps,我试图从JQuery函数中检索数据,并将其传递到全局变量中,以便与GoogleMaps一起使用。这些变量必须保持全局性,否则谷歌地图将无法使用它们。我设法从AJAX url获取我需要的所有数据,它完美地记录了这些数据,但只记录在Jquery函数中。如果我在它之外记录它,它是未定义的。是否有方法将这些值传递给全局变量 function displayMarkers() { var latlng = new google.maps.LatLng(latitd, longtd);

我试图从JQuery函数中检索数据,并将其传递到全局变量中,以便与GoogleMaps一起使用。这些变量必须保持全局性,否则谷歌地图将无法使用它们。我设法从AJAX url获取我需要的所有数据,它完美地记录了这些数据,但只记录在Jquery函数中。如果我在它之外记录它,它是未定义的。是否有方法将这些值传递给全局变量

function displayMarkers() {    
    var latlng = new google.maps.LatLng(latitd, longtd);
    var name = titleName;
    createMarker(latlng, name);    
}  

var latitd;
var longtd;
var titleName;       

$(document).ready(function() {
    $('#earthquakes').click(function() {    
        getQuakes();
    });

    function getQuakes() {
        $.ajax({
            url: 'http://earthquake.usgs.gov/fdsnws/event/1/query?format=geojson&starttime=' + yesterDate + '&endtime=' + displayDate,
            success: function(data) {
                console.log(data);
                $.each(data.features, function(key, val) {
                    var coord = val.geometry.coordinates;
                    locationD = {
                        latd: coord[0],
                        lngd: coord[1]
                    };
                    latitd = locationD.latd;
                    longtd = locationD.lngd;
                    titleName = val.properties.title;

                    console.log(latitd, longtd);
                    console.log(titleName);    
                });
            }    
        });    
    }    
});

您的代码应该是这样的

var latitd;
var longtd;
var titleName;

$(document).ready(function () {
    $('#earthquakes').click(function () {
        getQuakes();
    });
});

function getQuakes() {
    $.ajax({
        url: 'http://earthquake.usgs.gov/fdsnws/event/1/query?format=geojson&starttime=' + yesterDate + '&endtime=' + displayDate,
        success: function (data) {
            console.log(data);
            $.each(data.features, function (key, val) {
                var coord = val.geometry.coordinates;
                locationD = {
                    latd: coord[0],
                    lngd: coord[1]
                };
                latitd = locationD.latd;
                longtd = locationD.lngd;
                titleName = val.properties.title;

                console.log(latitd, longtd);
                console.log(titleName);

                //Call this function to display here after success ajax
                displayMarkers();
            });
        }
    });
}

function displayMarkers() {
    var latlng = new google.maps.LatLng(latitd, longtd);
    var name = titleName;
    createMarker(latlng, name);
}

您的代码应该是这样的

var latitd;
var longtd;
var titleName;

$(document).ready(function () {
    $('#earthquakes').click(function () {
        getQuakes();
    });
});

function getQuakes() {
    $.ajax({
        url: 'http://earthquake.usgs.gov/fdsnws/event/1/query?format=geojson&starttime=' + yesterDate + '&endtime=' + displayDate,
        success: function (data) {
            console.log(data);
            $.each(data.features, function (key, val) {
                var coord = val.geometry.coordinates;
                locationD = {
                    latd: coord[0],
                    lngd: coord[1]
                };
                latitd = locationD.latd;
                longtd = locationD.lngd;
                titleName = val.properties.title;

                console.log(latitd, longtd);
                console.log(titleName);

                //Call this function to display here after success ajax
                displayMarkers();
            });
        }
    });
}

function displayMarkers() {
    var latlng = new google.maps.LatLng(latitd, longtd);
    var name = titleName;
    createMarker(latlng, name);
}

在ajax请求中添加一个
async:false

在ajax请求中添加一个
async:false

将函数的定义放在Dom readyy之外,如果您错误地访问了它。只有在ajax成功之后,您才能获得lat和long值。然后你在另一个函数中使用这些变量谢谢你投票否决了我,但是没有一个“重复”的问题与我的问题相关。把函数的定义放在Dom ready之外,因为你是错误地访问它的。只有在ajax成功之后,您才能获得lat和long值。然后你在另一个函数中使用这些变量谢谢你投票否决我,但是没有一个“重复”的问题与我有关。不,它不会在Ajax函数之外传递这些值。它给我“未定义”请检查displayMarkers();功能位置。我换了一个。现在它可以用了,非常感谢你救了我!不,它不会在Ajax函数之外传递这些值。它给我“未定义”请检查displayMarkers();功能位置。我换了一个。现在它可以用了,非常感谢你救了我!不会改变任何事情。我在url:Line之后添加了它。如果它不起作用,你可以将latlang作为参数传递给你的displayMarkers。实际上不会改变任何东西。我在url:Line之后添加了它。如果它不起作用,您可以将latlang作为参数传递给displayMarkers。