新Google时区API的getJSON()调用出错

时间:2012-10-16 11:52:22

标签: javascript google-maps google-geocoding-api

我正在使用新的 Google Time Zone API

我用它来知道地图的纬度/长点的确切时间。

首先,我读到谷歌在6天前(2012年10月10日)发布了这个api,所以我没有找到关于这个API调用的文档。

我有以下问题:

Google强制您使用https,我收到了跨域错误:

XMLHttpRequest cannot load https://maps.googleapis.com/maps/api/timezone/json?location=35.209722,-118.300781&timestamp=1350372338&sensor=false Origin http://my_web is not allowed by Access-Control-Allow-Origin.

这是我获取JSON的代码:

url = "https://maps.googleapis.com/maps/api/timezone/json?location=35.209722,-118.300781&timestamp=1350372338&sensor=false";  
$.ajax({  
                 url: url,  
                 //data: {},  
                 type: "GET",  
                 crossDomain: true,  
                 dataType: 'json',  
                 //processData: false,  

                 success: function (data) {  
                     console.log('Succes!! Read some data...');  
                 },  
                 error: function (xhr, err) {  
                     console.log("readyState: " + xhr.readyState + "\nstatus: " + xhr.status);  
                     console.log("responseText: " + xhr.responseText);  
                 }  
             });

在许多帖子中建议使用JSONP而不是JSON,但问题是Google只提供JSON和XML的响应。

有没有人知道如何在没有跨域问题的情况下为https发出GET请求?

谢谢!

2 个答案:

答案 0 :(得分:2)

  

有没有人知道如何在没有跨域问题的情况下为https发出GET请求?

这是一项Web服务,从您的服务器检索它(或使用您服务器上的代理)。

答案 1 :(得分:2)

您可以使用YQL console来实现这一点。您可以使用json调用retreive json数据。

在控制台内部,您需要输入类似

的内容
select * from html where url="https://maps.googleapis.com/maps/api/timezone/json?location=35.209722,-118.300781&timestamp=1350372338&sensor=false"

你可以看到结果。下面是一些示例伪代码。您需要自己找出可用于xpath的内容(如果需要)

var url = 'https://maps.googleapis.com/maps/api/timezone/json?location=35.209722,-118.300781&timestamp=1350372338&sensor=false';
var yql = 'http://query.yahooapis.com/v1/public/yql?q=' + encodeURIComponent('select * from html where url="' + url + '" AND xpath="....."') + '&format=json&callback=?';  
$.getJSON(yql,function(data){  
    if(data.results){
     ... do your thing here with the data
    }
}