首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >回调中的Javascript回调

回调中的Javascript回调
EN

Stack Overflow用户
提问于 2012-12-03 03:47:26
回答 1查看 185关注 0票数 0

我很难理解为什么我从未点击下面的GETNEARCALLBACK函数。逻辑是这样的:

  1. 在页面加载时,我调用INITIALIZE
  2. INITIALIZE愉快地执行并调用GETSTATIONS
  3. GETSTATIONS使用GETNEARESTSTAIONS作为回调函数执行AJAX请求,web服务器以JSON格式响应数据库查询的结果。
  4. GETNEARESTSTAIONS接受结果并使用GETNEARCALLBACK作为回调函数创建Google距离矩阵请求
  5. 我运行我的站点,并使用Firebug来确定我永远无法到达GETNEARCALLBACK

我认为我对Google的使用是正确的,因为如果我不从AJAX请求中调用GETNEARESTSTATIONS,它就会正确执行。

函数初始化(){ GETPOSITION();DRAWMAP();GETADDR();GETSTATIONS();}

代码语言:javascript
复制
var xmlhttp;

function GETSTATIONS() {
  if(window.XMLHttpRequest) {
    xmlhttp = new XMLHttpRequest();
  } else {
    xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
  }
  xmlhttp.onreadystatechange = GETNEARESTSTATION();
  xmlhttp.open("GET", "final.php", true);
  xmlhttp.send();
}

var STATIONLIST;

function GETNEARESTSTATION() {
  if(xmlhttp.readyState == 4 && xmlhttp.status == 200) {
    STATIONLIST = eval("(" + xmlhttp.responseText + ")");
    var LAT = parseFloat(document.getElementById("LATITUDE").value);
    var LON = parseFloat(document.getElementById("LONGITUDE").value);
    var latlng = new google.maps.LatLng(LAT, LON);
    var destinationA = STATIONLIST[0].ADDRESS;
    var service = new google.maps.DistanceMatrixService();
    service.getDistanceMatrix({
      origins: [latlng],
      destinations: [destinationA],
      travelMode: google.maps.TravelMode.DRIVING,
      unitSystem: google.maps.UnitSystem.IMPERIAL,
      avoidHighways: false,
      avoidTolls: false
    }, GETNEARCALLBACK);
  }
}

function GETNEARCALLBACK(response, status) {
  if(status == google.maps.DistanceMatrixStatus.OK) {
    var destinations = response.destinationAddresses;
    var results = response.rows[0].elements;
    for(var j = 0; j < results.length; j++) {
      var element = results[j];
      document.getElementById("STATIONADDR").innerHTML = parseFloat(element.distance.value) + " " + response.destinationAddresses[j];
    }
  }
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-12-03 04:06:49

需要函数变量,而不是函数返回值。

代码语言:javascript
复制
//xmlhttp.onreadystatechange = GETNEARESTSTATION(); //error
xmlhttp.onreadystatechange = GETNEARESTSTATION; 
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13676863

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档