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

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

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

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

试试jquery jsonp:

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

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

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