Javascript 如何将JQuery变量传递给全局变量
我试图从JQuery函数中检索数据,并将其传递到全局变量中,以便与GoogleMaps一起使用。这些变量必须保持全局性,否则谷歌地图将无法使用它们。我设法从AJAX url获取我需要的所有数据,它完美地记录了这些数据,但只记录在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);
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。