2013-04-03 33 views
0

不工作我使用jQuery來處理像這樣的AJAX請求:使用innerHTML的iPhone上

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; 
    }}); 
} 

此代碼成功寫入發現郵政編碼的值與上標識拉鍊號DIV電腦。當我訪問iPhone上的網站時,即使我允許我的位置被共享,它也只是顯示爲空白。任何想法爲什麼?

+0

'eval'它使用起來很不好。 – Jai

回答

1

您正在嘗試執行跨域AJAX請求,由於same-origin policy,通常不允許該請求。避免這種情況的一種方法是使用Cross-origin resource sharing。該URL確實支持CORS(Access-Control-Allow-Origin=*標頭),但移動Safari請求首先到服務器,這是地圖API後端不支持。

解決此問題的其他方法是使用JSONP,但它是not supported by the service anymore

使用該地理編碼服務的最好方法是通過使用來自Google Maps JavaScript API v3Geocoding Service,與你不會有任何跨域請求問題作爲庫本身管理這些請求。

+0

這個伎倆! – Arun