此提取请求出了什么问题?

时间:2018-11-08 19:14:36

标签: ajax fetch

    let path=`api.openweathermap.org/data/2.5/weather?q=London`;
    let apiKey=  `&APPID=758bab291826491e79f93979de2ba255`
    let url= path+apiKey;


  function getWeather(url){
     return fetch(url)
        .then(response=> response.json())
        .then(data=>console.log(data))
        .catch(err=> console.log(err))

  }

getWeather();

立即在控制台中获取

enter image description here 我想不通,我对此很陌生。它的说法是404,但如果我复制URL并转到它,它将显示JSON数据

添加https://后的

err enter image description here

2 个答案:

答案 0 :(得分:0)

尝试以下方法:

let path=`https://api.openweathermap.org/data/2.5/weather?q=London`;
let apiKey=`&APPID=758bab291826491e79f93979de2ba255`
let url=path+apiKey;

function getWeather(url){
  return fetch(url)
  .then(response=> response.json())
  .then(data=>console.log(data))
  .catch(err=> console.log(err))
}

getWeather();

这应该有效。为什么?因为当您执行抓取操作时,它会尝试从应用程序当前所在的域中进行抓取。这就是为什么您获得127.0.0.1:5000(localhost)的原因,如果您提供https://,则不应这样做

答案 1 :(得分:0)

这应该可以解决问题:

let path = `https://api.openweathermap.org/data/2.5/weather?q=London`;
let apiKey = `&APPID=758bab291826491e79f93979de2ba255`;
let targetURL = path + apiKey;

function getWeather(url) {
  return fetch(url)
    .then(response => response.json())
    .then(data => console.log(data))
    .catch(err => console.log(err));
}

getWeather(targetURL);

第一个问题有两个问题:

  1. 当您执行抓取操作时,它会尝试从域中进行抓取 应用程序当前正在运行。这就是为什么您获得127.0.0.1:5000的原因 (localhost),如果您提供https://,则不应这样做。
  2. 您没有将URL传递给getWeather(url)函数,该函数 你已经宣布。希望这会有所帮助!