无法在 JavaScript 中将对象动态分配给数组



我试图从地理编码中获取latlng,并希望将这些信息作为对象分配给数组info=[]。我使用的代码是

var info = [];
var lat;
var lng;
$.each($('.udc-search-table tbody tr'), function(index, value) {
var address = '.....';
var geocode = new google.maps.Geocoder();
geocode.geocode({address: address}, function(result, status) {
if( status == google.maps.GeocoderStatus.OK) {
lat = result[0].geometry.location.lat();
info.push({'lat' : lat});
}
});
console.log(lat); // undefined and why here it is undefined
});
console.log(info); // here it is working 
// [{lat : .....}, {lat : ....}] working

此外,当我将变量info用于ajax数据时,从服务器响应来看,它只是将空的数组显示为string 2 "[]"

$.ajax({
url: udc.ajax_url,
type: 'POST',
data: {
action  : 'udc_update_latlng',
latlng : JSON.stringify(info)
},
success: function(data) {
console.log(data); // server response string 2 "[]"
}
});

但是,当我像这样将对象分配给info变量时,ajax服务器的响应是正确的。我的意思是正在发送json字符串数据。

$.each($('.udc-search-table tbody tr'), function(index, value) {
var ID = $(this).attr('id');
info.push({'id' : ID});
});

实际上,我需要将latlng分配给info变量来完成我的任务。实际问题是什么?

Try the full code below
var info = [];
var lat;
var lng;
var count = 5; //total row count
var i = 1;
$.each($('.udc-search-table tbody tr'), function (index, value) {
var address = '.....';
var geocode = new google.maps.Geocoder();
geocode.geocode({address: address}, function (result, status) {
if (status == google.maps.GeocoderStatus.OK) {
lat = result[0].geometry.location.lat();
info.push({'lat': lat});
if (count === i) {
var data = JSON.stringify(info);
ajaxFuntion(data);
}
i++;
}
});
});
function ajaxFuntion(info) {
$.ajax({
url: udc.ajax_url,
type: 'POST',
data: {
action: 'udc_update_latlng',
latlng: info
},
success: function (data) {
console.log(data);
}
});
}

相关内容

  • 没有找到相关文章

最新更新