0

我正在使用 jQuery 来处理 AJAX 请求,如下所示:

function success_callback(p){
    $.ajax({url:"http://maps.googleapis.com/maps/api/geocode/json?latlng=" + p.coords.latitude.toFixed(2) + "," + p.coords.longitude.toFixed(2) + "&sensor=true",success:function(result){
        var locationInfo = eval ("(" + result + ")");
        document.getElementById("zip-number").innerHTML = locationInfo.results[0].address_components[7].short_name;
    }});
}

此代码成功地将找到的邮政编码的值写入计算机上 ID 为邮政编码的 div。当我在 iPhone 上访问该网站时,即使我允许共享我的位置,它也只是显示为空白。任何想法为什么?

4

1 回答 1

1

您正在尝试执行跨域 AJAX 请求,由于同源策略,通常不允许这样做。避免这种情况的一种方法是使用跨域资源共享。此 URL 确实支持 CORS(Access-Control-Allow-Origin=*标头),但移动 safari会先向服务器发送 OPTIONS请求,地图 API 后端不支持此请求。

解决此问题的其他方法是使用JSONP,但服务不再支持它。

使用该地理编码服务的最佳方式是使用来自Google Maps JavaScript API v3的地理编码服务,这样您就不会遇到任何跨域请求问题,因为库会自行管理这些请求。

于 2013-04-03T07:40:04.517 回答