首页 > 解决方案 > 为什么我的控制台上未定义?

问题描述

我正在尝试使用 fetch 和 promise 进行 AJAX 调用。我想在控制台中显示城市。我能够显示温度,但由于某种原因,该位置显示为未定义。请指教。下面是我的代码:

function getWeather(woeid) {
  // You wanna pass in the API URL into the fetch method as a string
  // Moesif Orign & CORS chrome extension is used to fetch this API since we are practicing locally
  fetch(`https://www.metaweather.com/api/location/${woeid}/`) // Automatically returns a promise
    .then(result => { // The fetch AJAX request will be called result
      console.log(result);
      return result.json(); // This will process the data (body:ReadableSteam). Returns a promise 
    })
    .then(data => {
      //console.log(data);
      const today = data.consolidated_weather[0];
      console.log(`Todays temperatures in ${today.title} will stay between ${today.min_temp} and ${today.max_temp}.`);
    })
    .catch(error => console.log(error));
}

getWeather(2487956);
getWeather(44418);

标签: javascriptajax

解决方案


正如尼克所说,您似乎需要正确的数据选项。所以这段代码实际上修复了它:

const todaySrc = data.sources[0];
todaySrc.title // BBC

这是一个完整的片段:

function getWeather(woeid) {
  // You wanna pass in the API URL into the fetch method as a string
  // Moesif Orign & CORS chrome extension is used to fetch this API since we are practicing locally
  fetch(`https://www.metaweather.com/api/location/${woeid}/`) // Automatically returns a promise
    .then(result => { // The fetch AJAX request will be called result
      console.log(result);
      return result.json(); // This will process the data (body:ReadableSteam). Returns a promise 
    })
    .then(data => {
      //console.log(data);
      const today = data.consolidated_weather[0];
      const todaySrc = data.sources[0];
      console.log(`Todays temperatures in ${todaySrc.title} will stay between ${today.min_temp} and ${today.max_temp}.`);
    })
    .catch(error => console.log(error));
}

getWeather(2487956);
getWeather(44418);


推荐阅读