Openweathermap API ASK无法正常工作

时间:2018-03-04 18:38:09

标签: javascript api openweathermap

您好我试图做简单的天气应用程序,但我无法从API获得请求。

Somone可以帮助我吗?

$(document).ready(function testCall(){
  $.ajax({
    url: `http://api.openweathermap.org/data/2.5/weather?`,
    dataType: `JSON`,
    id: `7531860`,
    APPID: `8d3beea42a62c24610f3d57a8082a9c0`,
    success: function(data) {
      console.log("lol")
    },
    error: function(){
      console.log("WHy?")
    }

  });
})

1 个答案:

答案 0 :(得分:0)

好的,首先,错误回调函数接收您可以用来了解发生了什么的参数。使用稍微修改过的代码,我的状态代码为0。

error: function(xhr, exception){
  console.log("WHy?")
  console.log(xhr.status);
  console.log(exception);
}

我不太熟悉使用jQuery的ajax,所以如果你想使用jQuery,也许有人可以帮助你。下面我提供了一种使用内置的Fetch API实现所需功能的方法。这是Fiddle

function getWeatherData(Id, appId) {
    return fetch(`https://api.openweathermap.org/data/2.5/weather?id=${Id}&APPID=${appId}`)
    .then(res => res.json())
}

const YOUR_ID = null; // Replace Me
const YOUR_APP_ID = null; // Replace Me

getWeatherData(YOUR_ID, YOUR_APP_ID)
.then(weatherData => {
   // Work with your data
   console.log(weatherData);
});

包含您的API信息有助于解决此问题,但您现在应该重置它!

编辑:在使用fetch重写时,我弄清楚出了什么问题。该状态代码是由网址中的拼写错误引起的。您需要通过https而不是http请求。您还需要将查询参数添加到请求中,而不是添加到对象上。请参阅下文和fiddle

$(document).ready(function testCall(){
  $.ajax({
    url: `https://api.openweathermap.org/data/2.5/weather?id=PUT_YOUR_ID_HERE&APPID=PUT_YOUR_APP_ID_HERE`,
    dataType: `JSON`,
    success: function(data) {
    console.log(data);
    },
    error: function(xhr, exception){
    console.log("WHy?")
    console.log(xhr);
    console.log(xhr.status);
    console.log(exception);
    }
  });
});