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

How to pass JQuery variable to a global one

本文关键字:全局变量 变量 JQuery      更新时间:2023-09-26

我正试图从JQuery函数中检索数据,并将其传递到全局变量中,以便与谷歌地图一起使用。这些变量必须保持全局性,否则谷歌地图无法使用它们。我设法从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);
}

async:false添加到您的ajax请求中。