jQuery getJSON 无法跨域工作

发布于 2024-11-18 08:02:39 字数 720 浏览 2 评论 0原文

我正在尝试使用谷歌地图的 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);
          });
    }
});

I'm trying to use google maps' REST api to convert an typed in adress to coordinates. To do so I use jQuery's getJSON function as it uses a native JSONP call.

Though it won't work, it just doesn't get to success, so the alert is never called.

$("#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);
          });
    }
});

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

清醇 2024-11-25 08:02:39

Google 地图地理编码 API 不支持 JSON-P;它会忽略你的callback参数,因此跨域JSON-P将不起作用。

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

The Google Maps Geocoding API does not support JSON-P; it will ignore your callback parameter, thus cross-domain JSON-P won't work.

You should use official Google Maps Javascript library instead. Internally the library does use JSON-P to pass the information (since it's almost the only way to do cross-domain requests), but that URL is reserved to official library use only.

忆依然 2024-11-25 08:02:39

尝试将 &format=json 添加到您的 get jason url 和 chaneg &callback=?到 &jsoncallback=?

try adding &format=json to your get jason url and chaneg &callback=? to &jsoncallback=?

寻找一个思念的角度 2024-11-25 08:02:39

尝试 jquery jsonp:

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

   }
});

Try jquery jsonp:

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

   }
});
装迷糊 2024-11-25 08:02:39

javascript(在本例中为 jquery)永远不会在其自己的域之外获取或发布数据(至少据我所知,不允许 javascript post获取跨域)?您可以使用本地 php 脚本通过curl 从 google 服务器收集 json 信息,并将您的 get-query 发送到该本地脚本。我会尝试这个解决方法...

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

Isn't it a kind of security that javascript (in this case jquery) won't ever get or post data outside it's own domain (at least as far as I know javascript is not allowed to post or get cross domains)? You could use a local php script gathering the json information from the google server by curl and send your get-query to this local script. I would give this workaround a try...

Another way would be to use the google maps api for javascript. You could use the gecoding functions from that api to retrieve the latitude and longitude from a given address. So you wouldn't need to make any gets or posts...

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文