簡體   English   中英

jQuery getJSON 在跨域上不起作用

[英]jQuery getJSON won't work on cross domain

我正在嘗試使用谷歌地圖的 REST api 將輸入的地址轉換為坐標。 為此,我使用 jQuery 的 getJSON function,因為它使用原生 JSONP 調用。

雖然它不起作用,但它只是沒有成功,所以警報永遠不會被調用。

$("#makeCords").click(function(){
    straat = $('#straat').val();
    stad = $('#Stad').val();
    land = $('#Country').val();
    if(straat == "" || stad == "" || land == ""){
        alert("Onvoldoende gegevens! Vul straat, stad en land aan voor het gebruik van de ´bereken coordinaten´ functie.");
    }else{
        $.getJSON("http://maps.google.com/maps/api/geocode/json?callback=?",
        {
            adress: straat +", " + stad +", " + land,
            sensor: "false"
        },
          function(data) {
              alert(data);
          });
    }
});

Google 地圖地理編碼 API 不支持 JSON-P; 它將忽略您的callback參數,因此跨域 JSON-P 將不起作用。

您應該改用官方的 Google Maps Javascript 庫 在內部,該庫確實使用 JSON-P 來傳遞信息(因為它幾乎是進行跨域請求的唯一方法),但 URL 僅供官方圖書館使用。

嘗試將&format=json添加到您的 get jason url 和 chaneg &callback=? &jsoncallback=?

試試 jquery jsonp:

$.ajax({
   type: "GET",
   url: "http://url",
   dataType: "jsonp" ,
   success: function (data) {

   }
});

javascript(在本例中為 jquery)永遠不會在其自己的域之外獲取或發布數據(至少據我所知 javascript 不允許postget跨域),這難道不是一種安全嗎? 您可以使用本地 php 腳本通過 curl 從谷歌服務器收集 json 信息並將您的獲取查詢發送到此本地腳本。 我會嘗試這種解決方法...

另一種方法是將谷歌地圖 api 用於 javascript。 您可以使用 api 中的地理編碼函數從給定地址檢索緯度和經度。 因此,您無需進行任何獲取或發布...

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM