Php 无法使用格式正确的数据填充JSON请求
我正试图用从phpsearch.php文件(如图所示)返回的数据填充JSON请求 route calculation函数位于问题的底部,我以前使用过异步JSON重新请求,但这导致代码在设置原点值之前执行,现在正在设置,但看起来不正确 如何确保纬度和经度结果采用正确的JSON格式?当前JSON请求如下所示:Php 无法使用格式正确的数据填充JSON请求,php,javascript,json,google-maps,Php,Javascript,Json,Google Maps,我正试图用从phpsearch.php文件(如图所示)返回的数据填充JSON请求 route calculation函数位于问题的底部,我以前使用过异步JSON重新请求,但这导致代码在设置原点值之前执行,现在正在设置,但看起来不正确 如何确保纬度和经度结果采用正确的JSON格式?当前JSON请求如下所示: Request URL:https://maps.googleapis.com/maps/api/js/DirectionsService.Route?4b0&5m4&1m3
Request URL:https://maps.googleapis.com/maps/api/js/DirectionsService.Route?4b0&5m4&1m3&1m2&1dNaN&2dNaN&5m4&1m3&1m2&1d37.738029&2d-122.499481&6e1&8b1&12sen-GB&100b0&102b0&callback=_xdc_._1rqnjk&token=80599
function (result){
origin = new google.maps.LatLng(result[0].latitude, result[0].longitude);
}
路线计算代码:
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});
}
}
$.ajax({
url:'phpsearch2.php',
dataType:'html',
data:{name:startname},
async:false,
success:function (result)
{
console.log(result)
origin = new google.maps.LatLng(result[0].lat, result[0].lng);
}});
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>'+ origin +'</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+')
';
}
}
});
}
LatLng构造函数将两个数字作为参数,您将向其传递一个JSON对象。获取纬度和经度属性并直接传递数字,如下所示:
Request URL:https://maps.googleapis.com/maps/api/js/DirectionsService.Route?4b0&5m4&1m3&1m2&1dNaN&2dNaN&5m4&1m3&1m2&1d37.738029&2d-122.499481&6e1&8b1&12sen-GB&100b0&102b0&callback=_xdc_._1rqnjk&token=80599
function (result){
origin = new google.maps.LatLng(result[0].latitude, result[0].longitude);
}
我在猜测具体的属性,您可能希望
console.log(result)
查看确切的对象结构。返回的数据不是JSON,但您告诉jQuery需要JSON。同步“Ajax”请求通常也不好。是否可以将phpsearch.php更改为以JSON格式返回?我刚刚尝试将AJAX请求中的返回类型更改为HTML,但我的JSON请求中仍然没有正确的数据。请求GET/maps/api/js/DirectionsService.Route?4b0&5m4&1m3&1m2&1dNaN&2dNaN&5m4&1m3&1m2&1d37.738029&2d-122.499481&6e1&8b1&12sen GB&100b0&102b0&callback=\uxDC\u1Rqnjk&token=73614 HTTP/1.1当然。在前面的问题中,您似乎返回了JSON(即使它是手动构建的)。为什么不按照建议的那样做呢?即使我按照问题中的建议封装了一个函数,JSON请求仍然没有填充。我提出了一个新问题,试图找出如何将我的数据转换为正确的格式,我认为尝试并不断更新该问题会太混乱。警告*您的代码容易受到sql注入攻击!我尝试了一下,但出于某种原因,我突然看到了这个错误:警告:array\u push()希望参数1为array,在C:\wamp\www\WalkaboutSF\phpsearch2.phpIs中为null。你做循环和array\u push()之类的事情有什么原因吗?你只是想得到一个latlng,对吧?你可能会得到那个错误,因为你从来没有声明$json
。加入一个$json=array()你好,内森,谢谢你的帮助。循环的原因是,一旦我开始工作,我就必须扩展它,这样我就可以得到多个纬度和经度。我已经做了您建议的更改,并用代码和响应更新了我的原始帖子,不幸的是JSON仍然不正确。您在控制台中看到了什么?