将ajax调用中的值返回到父函数

时间:2010-09-20 22:30:51

标签: javascript jquery ajax callback return

我有一个函数,我需要通过ajax调用返回一个url。

var heatmap = new google.maps.ImageMapType({
    getTileUrl: function(coord, zoom) {
        var tileURL;
        $.get('getimage.php', { zoom: zoom, x: coord.x, y: coord.y }, function(data) {
            if(data.status) { tileURL=data.image; }
        }, "json");
        return "tileURL";
    },
       tileSize: new google.maps.Size(256, 256),
       opacity:0.55,
       isPng: true
});

显然,ajax调用是异步的,所以我理解为什么上面的代码会将tileURL作为undefined返回。我知道一般来说人们使用回调函数来解决这个问题,但是我不知道如何回调给父函数返回一个值。我正在使用谷歌地图API,所以我没有任何灵活性来改变它的工作方式。

1 个答案:

答案 0 :(得分:4)

由于Ajax请求是异步的,因此您唯一的选择是使用回调。如果你可以向“父”(真的,“调用”)函数返回一个值,那么请求就不会是异步的;它会阻止调用函数。此外,无法从该函数的闭包内获取对调用函数的引用。 (即,你不能return到调用堆栈中更高的函数。