2015-12-25 61 views
2

我試圖顯示從2個位置(其中有地理編碼API檢索到的緯度/經度值)的JQuery Dark Sky Forecast API中獲取的天氣信息。我設法獲取緯度/經度數據,但從預測API中被拒絕。控制檯日誌顯示錯誤信息爲:Dark Sky Forecast API不返回數據?

GET https://api.forecast.io/forecast/260960a77daa4006fe463ae709efed95/[object%20HTMLInputElement],[object%20HTMLInputElement] '(x)的

的XMLHttpRequest不能加載https://api.forecast.io/forecast/260960a77daa4006fe463ae709efed95/[object%20HTMLInputElement],[object%20HTMLInputElement]'。請求的資源上沒有「Access-Control-Allow-Origin」標題。因此不允許原產地'null'訪問。響應有HTTP狀態代碼400

的代碼如下:

//Call Geocoding API to find lat/lng value 
    $.ajax({ 
    url:"https://maps.googleapis.com/maps/api/geocode/json?address="+fromLocation+"&key=AIzaSyBeUYP6E-zxXWzTzyvuUtUolGLUWy7Jneg", 
    type: "GET", 
    success: function(res){ 
     var fromLat = console.log(res.results[0].geometry.location.lat); 
     var fromLng = console.log(res.results[0].geometry.location.lng); 

     //call next ajax function 
     $.ajax({ 
     url:"https://maps.googleapis.com/maps/api/geocode/json?address="+toLocation+"&key=AIzaSyBeUYP6E-zxXWzTzyvuUtUolGLUWy7Jneg", 
     type: "GET", 
     success: function(res){ 
      var toLat = console.log(res.results[0].geometry.location.lat); 
      var toLng = console.log(res.results[0].geometry.location.lng); 
     } 
     }); 
    } 
    }); 

    //Call Forecast API for weather value 
    $.ajax({ 
    url:'https://api.forecast.io/forecast/260960a77daa4006fe463ae709efed95/'+fromLat+','+fromLng+"'", 
    type: "GET", 
    success: function(res){ 
     console.log(res); 
    } 
    }) 

是否有格式錯誤,而不是一個API? 預先感謝並對格式感到抱歉。

回答

2

由於跨域GET,因此您正在從網頁域外部進行XMLHttp請求。如果你想快速解決這個問題,你可以使用在線代理服務(儘管不推薦)。例如,您只需將http://cors.io/?u=粘貼到URL的前面即可。

像這樣: http://cors.io/?u=http://google.ca

您也可以考慮跨來源資源共享(CORS),這是一個W3C規範。這將是解決這個問題的正確方法。另外,另一個解決方案是擺脫www,因爲這可能會針對不同的域。