2013-04-06 40 views
0

我想從PHP/MySQL查詢返回數據庫的緯度和經度值到我的Javascript函數,以填充谷歌地圖JSON請求。無法將經度/緯度結果從PHP返回到Javascript JSON MySQL查詢

我的PHP/MySQL查詢腳本,phpsearch2.php是:

<?php 
include "base.php"; 
$name = $_GET["name"]; 
$query = "SELECT lat, lng FROM markers WHERE name = '".$name."'"; 
$result = mysql_query($query); 
while($row = mysql_fetch_array ($result))  
{ 
    echo '{'; 
      echo '"latitude":"'.$row['lat'].'",'; 
      echo '"longitude":"'.$row['lng'].'",'; 
    echo '}';  
} 
?> 

它返回這個格式的值:

{"latitude":"37.730267","longitude":"-122.498589",} 

這裏是我的根計算功能,當我運行程序我得到一個錯誤,說'起源未定義'即使我認爲我設置它具有相同的價值作爲返回結果從JSON請求到phpsearch,我只是不知道錯誤在哪裏。

function calcRoute() { 
    var startname = document.getElementById('start').value; 
    var endname = document.getElementById('end').value; 
    var waypts = []; 
    var checkboxArray = document.getElementById('waypoints'); 
    for (var i = 0; i < checkboxArray.length; i++) { 
     if (checkboxArray.options[i].selected == true) { 
     waypts.push({ 
      location:checkboxArray[i].value, 
      stopover:true}); 
     } 
    } 

$.getJSON("phpsearch2.php", {name : startname}, function (result) { 
origin = google.maps.LatLng('result'); 
}); 

var end = new google.maps.LatLng('37.738029', '-122.499481'); 
    var request = { 
     origin: origin, 
     destination: end, 
     waypoints: waypts, 
     optimizeWaypoints: true, 
     travelMode: google.maps.DirectionsTravelMode.WALKING 
    }; 
     directionsService.route(request, function(response, status) { 
    //document.write('<b>'+ start + end + '</b>'); 
     if (status == google.maps.DirectionsStatus.OK) { 
     directionsDisplay.setDirections(response); 
     var route = response.routes[0]; 
     var summaryPanel = document.getElementById('directions_panel'); 
     summaryPanel.innerHTML = ''; 
     // For each route, display summary information. 
     for (var i = 0; i < route.legs.length; i++) { 
      var routeSegment = i + 1; 
      summaryPanel.innerHTML += '<b>Time for a Walkabout </b><br>'; 
      summaryPanel.innerHTML += '<b>From ' + startname + ' </b>'; 
      summaryPanel.innerHTML += '<b>to ' + endname + '('+ route.legs[i].distance.text +')</b><br>'; 

     } 
     } 
    }); 
} 
+0

OT:始終使用'json_encode'在PHP中生成JSON。看看這個答案,瞭解同步和異步代碼之間的區別:http://stackoverflow.com/a/14220323/218196。 Ajax是異步的。 – 2013-04-07 00:25:31

回答

1

您將'result'作爲字符串傳入。您需要傳遞不帶引號的結果對象:

var origin = google.maps.LatLng(result); 

請記住$ .getJSON是異步的。您可能需要將其餘gmaps代碼包裝在函數聲明中,並在設置了原點後,在$ .getJSON回調中調用該函數。否則,您仍然在從服務器獲取源之前嘗試使用源。

喜歡的東西:

$.getJSON("phpsearch2.php", {name : startname}, function (result) { 
    var origin = google.maps.LatLng(result); 

    // Now that we have our origin, we can initialize the rest 
    init(origin); 
}); 

function init(origin) { 
    var end = new google.maps.LatLng('37.738029', '-122.499481'); 
    var request = { 
     origin: origin, 
    <snip> 
} 
+0

謝謝,這肯定是一個問題,我仍然看到一個錯誤我作出這樣的改變之後,雖然 錯誤:財產無效值:未定義 ... Y)/ d); F && f.io &&( qa(k,f.io [0]),Ka(k,f.io [1])); return {ya:f,W:e,df:g,anchorOffset:k ... – 2013-04-06 23:48:31

+0

我更新了我的答案,認爲這就是它 – jszobody 2013-04-06 23:51:21

+0

看看更新的答案。在繼續前,您需要等待$ .getJSON返回。 – jszobody 2013-04-07 00:07:14