无法从PHP MySQL查询将纬度/经度结果返回到Javascript JSON
我试图将纬度和经度的数据库值从PHP/MySQL查询返回到Javascript函数,以便填充google maps JSON请求 我的PHP/MySQL查询脚本phpsearch2.PHP是:无法从PHP MySQL查询将纬度/经度结果返回到Javascript JSON,php,javascript,json,google-maps,Php,Javascript,Json,Google Maps,我试图将纬度和经度的数据库值从PHP/MySQL查询返回到Javascript函数,以便填充google maps JSON请求 我的PHP/MySQL查询脚本phpsearch2.PHP是: <?php include "base.php"; $name = $_GET["name"]; $query = "SELECT lat, lng FROM markers WHERE name = '".$name."'"; $result = mysql_query($query); whil
<?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 '}';
}
?>
这是我的计算根函数,当我运行程序时,我得到一个错误,说“origin is not defined”,尽管我认为我将其设置为与从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>';
}
}
});
}
函数calcRoute(){
var startname=document.getElementById('start').value;
var endname=document.getElementById('end').value;
var-waypts=[];
var checkboxArray=document.getElementById('waypoints');
对于(var i=0;i”;
summaryPanel.innerHTML+='来自'+startname+'';
summaryPanel.innerHTML+='到'+endname+'('+route.legs[i].distance.text+')
';
}
}
});
}
您正在以字符串形式传递“结果”。您需要传递结果对象,不带引号:
var origin = google.maps.LatLng(result);
请记住,$.getJSON是异步的。您可能需要将gmaps代码的其余部分封装在函数声明中,并在设置origin后在$.getJSON回调中调用该函数。否则,在从服务器获取origin之前,您仍在尝试使用它
比如:
$.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>
}
$.getJSON(“phpsearch2.php”,{name:startname},函数(结果){
var origin=google.maps.LatLng(结果);
//既然我们有了原点,就可以初始化其余的
初始(原点);
});
函数初始化(原点){
var end=new google.maps.LatLng('37.738029','-122.499481');
var请求={
来源:来源,,
}
谢谢,这确实是一个问题,在我做出更改后,我仍然看到一个错误,尽管错误:属性值无效:未定义…y)/d);f&&f.io&(qa(k,f.io[0]),Ka(k,f.io[1]);返回{ya:f,W:e,df:g,anchorOffset:k…查看更新后的答案。您需要等待$.getJSON返回,然后再继续。OT:始终使用json\u encode
在PHP中生成json。查看此答案以了解同步和异步代码之间的区别:.Ajax是异步的。
$.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>
}