使用innerHTML无法在iPhone上运行

时间:2013-04-03 06:32:30

标签: javascript jquery iphone mobile-safari

我正在使用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上访问该站点时,即使我允许共享我的位置,它也只显示空白。有什么想法吗?

1 个答案:

答案 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,因为您自己管理这些请求,因此您不会遇到任何跨域请求问题。