日期:2014-05-16  浏览次数:20304 次

求教,百度地图api转换坐标后怎么通过ajax传递给php?
如题,请各位帮帮忙,先是用HTML获取了用户坐标后,利用百度地图API转换为百度地图坐标后,想通过AJAX将坐标传递给PHP,但是执行的时候传递不过去,代码如下:

//这部分是利用HTML5获取用户位置
$(function() {
        if (window.navigator.geolocation) {
            var options = {
                enableHighAccuracy: true,
            };
            window.navigator.geolocation.getCurrentPosition(handleSuccess, handleError, options);
        } else {
            alert("浏览器不支持html5来获取地理位置信息");
        }


 function handleSuccess(position){
            // 获取到当前位置经纬度  本程序中是chrome浏览器取到的是google地图中的经纬度
            var lng = position.coords.longitude;
            var lat = position.coords.latitude;
            // 调用百度地图api显示
            var map = new BMap.Map("map");
            var ggPoint = new BMap.Point(lng, lat);

translateCallback = function (point){
//alert("转化为百度坐标为:"+point.lng + "," + point.lat);
 $.ajax({  
                 type: "GET",  
                 url: "location.php,  
                 cache: false,  
                 data:"x="+point.lng + "&y=" + point.lat,
async: false,
                  success: onSuccess,  
                  error: onerror
                });  
}
BMap.Convertor.translate(ggPoint,0,translateCallback);     //真实经纬度转成百度坐标
}


运行后,发现ajax的success和error都没反应,这两个方法在下文中都已经定义了,是alert一个提示,是不是百度地图里不能用ajax?
------解决方案--------------------
首先你代码都有问题了

 url: "location.php",  //这里字符串为闭合


success: onSuccess,  
error: onerror


你的回调函数名很怀疑你写对了没有。自己用firebug或者chrome开发工具检查下是不是还有其他错误
------解决方案--------------------
应该是像LS所得  URL的双引号没有闭合

还有建议LZ在开发javascript的时候养成使用firebug或者chrome(f12)的好习惯,你在不经意间写错的地方他都会给你提醒的,可以省下你很多的排错时间
------解决方案--------------------
LZ可以先看point.lat,point.lng这两个值是否能取到

然后再用调试工具看ajax请求,这两个值是否发送过去了,如果发送过去,那你的php接收端可能写错了