想传回回调函数里面的一些值,代码如下
function zoomOut()
 {
            debugger;
            latlng = map.fromContainerPixelToLatLng(clickedPixel);
            mygeocode.getLocations (latlng,function(response) {
                   document.getElementById("toaddress").value = response.Place[0].address;
                   temp =  response.Place[0].address; //temp是全局变量
                            }
            );
            anotherFunction(temp);调试的时候,函数里面的temp的确有值了,但下面的temp却是 undefined。请问各位是怎么回事?还有如果我单步的能够进到上面回调函数的内部,却出不来了,没能单步到 anotherFunction这里,但是直接可以运行到 anotherFunction。

解决方案 »

  1.   

    补充个问题,其实temp不是undefined,而是显示上次结果的值。比如我再次调用zoomOut的话,temp的值会是上一次的值。
      

  2.   

                mygeocode.getLocations (latlng,function(response) {
                       document.getElementById("toaddress").value = response.Place[0].address;
                       temp =  response.Place[0].address; //temp是全局变量
                                }
                );这个不是执行里面的代码 而是定义(不知道是事件还是函数定义,你的getLocations我不知道是什么)
      

  3.   

    getLocations(query:String|GLatLng, callback:function) 
    此方法向 Google 地址解析服务发送请求,要求该服务对指定的 query 进行解析并在指定的 callback 中处理响应您必须传递 callback 方法以处理响应。此响应将包含 Status 代码,如果成功,则会包含一个或多个 Place 对象。这个google提供的一个api, 传递进去的latlng 其实是个经纬度的对象。某次运行的结果如下- response {...} Object
    name "23.386380,112.847443" String
    - Place {...} Object
    -     [0] {...} Object
            address "中国广东省佛山市三水区" String
    +         AddressDetails {...} Object
    +          ExtendedData {...} Object
             id "p1" String
    +          Point {...} Object
    +     [1] {...} Object
    +     [2] {...} Object
    +     [3] {...} Object
    + Status {...} Object其实我是奇怪,为什么temp会显示上一次的结果呢
      

  4.   

    function zoomOut() { debugger; latlng = map.fromContainerPixelToLatLng(clickedPixel); mygeocode.getLocations (latlng,function(response) { document.getElementById("toaddress").value = response.Place[0].address; temp = response.Place[0].address;anotherFunction(temp); //temp是全局变量  } ); 先获取temp,在调用函数
      

  5.   

    不行啊,因为这个函数是通过右键菜单来调用的,这个temp是一个实时的地图信息,必须通过 getLocations方法来获得。
      

  6.   

    既然是服务器请求 那么async设置为false
      

  7.   

    难道因为 ajax的异步性? 这个getlocations其实就是通过 ajax完成的。
      

  8.   

    虽然还不知道原因,但是把与temp相关的操作放到 getLocations里面去,问题解决了。请问一下上楼,怎样设置 async 属性?因为是 google 提供的 api,直接建立对象(mygeocode)后,直接调用getLocations就可以了,背后的ajax请求等不用干预。
      

  9.   

    你先后顺序错了撒!你要用temp这个值,肯定要等服务器响应回来后,再使用撒!