如何在另一个API的Ajax调用中调用API

时间:2018-07-02 21:26:52

标签: javascript jquery ajax

我正在尝试从天气API中获取天气数据。此API需要位置的经度和纬度。因为我想使用位置名称(由纬度和经度插入)作为用户输入,所以我想首先使用地址解析API获取这些值。

但是当我尝试在地址解析API的ajax请求中调用weather API时,会遇到跨域错误。

代码如下:

function get_gps_weather(location,maps_api_key, weather_api_key){

$.ajax({
    url : 'https://maps.googleapis.com/maps/api/geocode/json?address='+location+'&key='+api_key,
    type: 'GET',
    success : function(data){
        var latitude=data['results'][0]['geometry']['location']['lat'];
        var longitude=data['results'][0]['geometry']['location']['lng'];

        $.ajax({
            url : 'https://api.darksky.net/forecast/'+weather_api_key+'/'+latitude+','+longitude
            type: 'GET',
            success : function(weather_data){
                console.log(weather_data)
            }
        });       
    }
}); 
}

谢谢, 卢卡斯

1 个答案:

答案 0 :(得分:2)

您的代码很有意义。您遇到的问题是CORS

Darksky API没有Access-Control-Allow-Origin解析为*。这意味着您将需要设置一个代理服务器来在后台调用API(在您发出的请求中,API密钥随即发出)。

https://darksky.net/dev/docs/faq包含所有相关信息。