function getCoordenadas()
{
var coordenadas = new Array();
$.post(
'<?=$this->baseUrl('user/parse-kml')?>',
{ kmlName: "esta_chica.kml"},
function(jsonCoord) {
jQuery.each(jsonCoord, function(i, val) {
var latlng = val.split(',');
coordenadas.push(new google.maps.LatLng(latlng[0], latlng[1]));
});
},
'json'
);
return coordenadas;
}
像这样:
$(document).ready(function(){
$('.caller').click(function() {
console.log(getCoordenadas());
});
});
因此,当您单击.caller时,它将调用该函数以获取正确填充数组的数据,但console.log(getCoordenadas());输出[].
如果我将数组声明(var coordenadas = new Array();)从函数作用域移到全局,则当我第一次单击.caller时,会出现该问题.console.log(getCoordenadas());输出[],但是第二次正确输出数组.有任何想法吗?
提前致谢
解决方法:
此功能异步工作. AJAX发布被触发,然后函数返回而无需等待AJAX调用完成.这就是为什么coordenadas数组为空的原因.
全局设置时,第一次仍然为空,第二次尝试时,ajax返回并填充数组.您应该重组代码以使用回调.像这样:
// deFinition
function getCoordenadas(callback)
{
var coordenadas = new Array();
$.post(
'<?=$this->baseUrl('user/parse-kml')?>',
{ kmlName: "esta_chica.kml"},
function(jsonCoord) {
jQuery.each(jsonCoord, function(i, val) {
var latlng = val.split(',');
coordenadas.push(new google.maps.LatLng(latlng[0], latlng[1]));
});
callback(coordenadas);
},
'json'
);
}
// usage
$(document).ready(function(){
$('.caller').click(function() {
getCoordenadas(function(coord) {
console.log(coord);
})
});
});