在ajax回调中使用谷歌地图变量

时间:2014-01-07 20:09:50

标签: ajax google-maps

为什么在 ajax回调函数(成功)中无法访问map变量,而其他变量则是。

为了进一步解释我的问题,我在以下代码中添加了注释

var map;
var g = 10;
function initialize() {
    var mapOptions = {
        zoom: 8,
        center: new google.maps.LatLng(-34.397, 150.644)
    };
    map = new google.maps.Map(document.getElementById('map_el'), mapOptions);
    g = 15;
    alert(g); // Gives 15
    alert(map.getCenter()); // Gives correct values
}

但是在ajax回调请求的下面的函数中。我面临有线回应

$(document).ready(function ()
{
    initialize();            
    $.ajax({
        url: 'ajax.aspx/getLocation',
        type: "POST",
        contentType: "application/json; charset=uft-8",
        dataType: 'json',
        success: function (data)
        {
            alert(g); // Gives 15
            alert(map.getCenter()); // Gives error => map is undefined
        }
    });
});

注意:以上两个函数在脚本标记

中的范围相同

1 个答案:

答案 0 :(得分:0)

您的initialize功能似乎正在执行 asynchronously 。所以尝试使用 setTimeout()

进行小时滞的ajax调用
$(document).ready(function () {
    initialize();            
    setTimeout(function () {
        $.ajax({
            url: 'ajax.aspx/getLocation',
            type: "POST",
            contentType: "application/json; charset=uft-8",
            dataType: 'json',
            success: function (data)
            {
                alert(g); // Gives 15
                alert(map.getCenter()); // Gives error => map is undefined
            }
        });
    }, 10);
});

callbacks