你好,我正在调用这个函数:
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 post 被触发,然后函数返回,无需等待 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);
})
});
});
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)