我正在使用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 zip-number成功将找到的邮政编码的值写入div。当我在iPhone上访问该站点时,即使我允许共享我的位置,它也只显示空白。有什么想法吗?
答案 0 :(得分:1)
您正在尝试执行跨域AJAX请求,由于same-origin policy通常不允许这样做。避免这种情况的一种方法是使用Cross-origin resource sharing。此URL确实支持CORS(Access-Control-Allow-Origin=*
标头),但首先向服务器发送移动safari sends an OPTIONS请求,这是map API后端不支持的。
解决此问题的其他方法是使用JSONP,但它是not supported by the service anymore。
使用该地理编码服务的最佳方法是使用Geocoding Service中的Google Maps JavaScript API v3,因为您自己管理这些请求,因此您不会遇到任何跨域请求问题。强>