jQuery getJSON不适用于跨域

时间:2011-07-02 15:26:41

标签: javascript jquery google-maps jsonp getjson

我正在尝试使用谷歌地图的REST api将输入的地址转换为坐标。为此,我使用jQuery的getJSON函数,因为它使用本机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);
          });
    }
});

4 个答案:

答案 0 :(得分:3)

Google Maps Geocoding API不支持JSON-P;它将忽略您的callback参数,因此跨域JSON-P将无效。

您应该使用官方Google Maps Javascript库。在内部,库确实使用JSON-P来传递信息(因为它几乎 是执行跨域请求的唯一方法),但该URL仅供官方库使用。

答案 1 :(得分:0)

尝试将& format = json 添加到您的获取jason网址并更改& callback =? & jsonp callback =?

答案 2 :(得分:0)

尝试jquery jsonp:

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

   }
});

答案 3 :(得分:-2)

javascript(在这种情况下是jquery)不会在其自己的域之外获取或发布数据(至少据我所知,javascript不允许postget跨域名?)?您可以使用本地php脚本通过curl从google服务器收集json信息,并将您的get-query发送到此本地脚本。我试试这个变通方法......

另一种方法是使用google maps api for javascript。您可以使用该api中的gecoding函数从给定地址检索纬度和经度。所以你不需要做任何获取或发布......