我正在使用新的 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×tamp=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×tamp=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请求?
谢谢!
答案 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×tamp=1350372338&sensor=false"
你可以看到结果。下面是一些示例伪代码。您需要自己找出可用于xpath的内容(如果需要)
var url = 'https://maps.googleapis.com/maps/api/timezone/json?location=35.209722,-118.300781×tamp=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
}
}