0

私はなぜ私がGETNEARCALLBACK以下の関数をヒットしなかったのかについて行き詰まっています。ロジックは次のようになります。

  1. ページの読み込み時にINITIALIZE
  2. INITIALIZE喜んで実行し、呼び出しますGETSTATIONS
  3. GETSTATIONSコールバック関数としてを使用してAJAXリクエストをGETNEARESTSTAIONS実行し、WebサーバーはJSON形式のデータベースクエリの結果で応答します。
  4. GETNEARESTSTAIONSGETNEARCALLBACK結果を取得し、コールバック関数として使用してGoogleMapsAPI距離行列リクエストを作成します
  5. 私は自分のサイトを実行し、Firebugを使用してに到達しないことを確認しGETNEARCALLBACKます。

GETNEARESTSTATIONSAJAXリクエスト内から呼び出さないと、正しく実行されるため、GoogleMapsAPIの使用は正しいと思います。

関数INITIALIZE(){GETPOSITION(); DRAWMAP(); GETADDR(); GETSTATIONS(); }

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];
    }
  }
}
4

1 に答える 1

0

関数の戻り値ではなく、関数変数が必要

//xmlhttp.onreadystatechange = GETNEARESTSTATION(); //error
xmlhttp.onreadystatechange = GETNEARESTSTATION; 
于 2012-12-03T04:06:49.120 に答える