无法在 JavaScript 中将对象动态分配给数组
Can't assign object to array dynamically in JavaScript
我试图从地理编码中获取 lat 和 lng 并希望将这些信息作为对象分配给数组 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});
});
实际上我需要将 lat 和 lng 分配给 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);
}
});
}
我试图从地理编码中获取 lat 和 lng 并希望将这些信息作为对象分配给数组 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});
});
实际上我需要将 lat 和 lng 分配给 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);
}
});
}