Dark Sky Forecast API不返回数据?

时间:2015-12-25 08:06:03

标签: jquery ajax geocoding weather-api

我正在尝试在JQuery中显示从Dark Sky Forecast API获取的天气信息,用于2个位置(具有通过Geocoding API检索的lat / lng值)。我设法获得了lat / lng数据但被Forecast API拒绝了。控制台日志显示错误消息:

  

获取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 1? 提前致谢并抱歉格式化。

1 个答案:

答案 0 :(得分:3)

由于跨域GET,这是一个常见问题,因为您正在从Web页面的域外部执行XMLHttp请求。如果要快速解决此问题,可以使用在线代理服务(但不建议使用)。例如,您只需将http://cors.io/?u=粘贴在网址的前面即可。

像这样: http://cors.io/?u=http://google.ca

您还可以查看跨源资源共享(CORS),这是一个W3C规范。这将是解决这个问题的正确方法。此外,另一种解决方案是摆脱www,因为它可以针对不同的域。