OpenWeatherMap API 返回 'undefined'
OpenWeatherMap API returning 'undefined'
我之前的问题不够清晰,所以我会尽量说清楚。
我正在尝试创建一个天气应用程序,但每次我尝试 fetch
信息(JSON 格式)时,它 returns 未定义。我正在使用纯香草 JavaScript 并尝试加载 Open Weather Map 的 API。我尝试使用另一个 API(Free Weather API),但它也返回了 undefined。请注意,网站加载正常,我认为这只是我的代码有问题。
fetch('http://api.openweathermap.org/data/2.5/weather?q=Traralgon&appid=a211b9a621afd7714296d94616623dea&units=metric').then(function (response) {
console.log('success!', response.main);
}).catch(function (err) {
console.warn('Something went wrong.', err);
});
Promise 的工作方式,您需要转换响应并将此转换传递到下一个 then
管道。
fetch(
'http://api.openweathermap.org/data/2.5/weather?q=Traralgon&appid=a211b9a621afd7714296d94616623dea&units=metric'
)
.then(function (response) {
return response.json();
})
.then(function (responseJSON) {
console.log('success!', responseJSON.main);
})
.catch(function (err) {
console.warn('Something went wrong.', err);
});
解释:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise
在对数据进行任何操作之前,我们应该在响应对象上使用 json()
方法。实际上 json()
方法接受一个 Response 流并将其读取完成。它 returns 一个承诺。因此,为了使用 response.json()
返回的承诺,我们应该使用 .then()
方法。在解析时,它将正文解析为 JSON.
fetch('http://api.openweathermap.org/data/2.5/weather?q=Traralgon&appid=a211b9a621afd7714296d94616623dea&units=metric')
.then(function (response) {
// parsing the body of response object
return response.json();
})
.then(function (response) {
console.log('sucess', response.main);
})
.catch(function (err) {
console.warn('Something went wrong.', err);
});
我之前的问题不够清晰,所以我会尽量说清楚。
我正在尝试创建一个天气应用程序,但每次我尝试 fetch
信息(JSON 格式)时,它 returns 未定义。我正在使用纯香草 JavaScript 并尝试加载 Open Weather Map 的 API。我尝试使用另一个 API(Free Weather API),但它也返回了 undefined。请注意,网站加载正常,我认为这只是我的代码有问题。
fetch('http://api.openweathermap.org/data/2.5/weather?q=Traralgon&appid=a211b9a621afd7714296d94616623dea&units=metric').then(function (response) {
console.log('success!', response.main);
}).catch(function (err) {
console.warn('Something went wrong.', err);
});
Promise 的工作方式,您需要转换响应并将此转换传递到下一个 then
管道。
fetch(
'http://api.openweathermap.org/data/2.5/weather?q=Traralgon&appid=a211b9a621afd7714296d94616623dea&units=metric'
)
.then(function (response) {
return response.json();
})
.then(function (responseJSON) {
console.log('success!', responseJSON.main);
})
.catch(function (err) {
console.warn('Something went wrong.', err);
});
解释:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise
在对数据进行任何操作之前,我们应该在响应对象上使用 json()
方法。实际上 json()
方法接受一个 Response 流并将其读取完成。它 returns 一个承诺。因此,为了使用 response.json()
返回的承诺,我们应该使用 .then()
方法。在解析时,它将正文解析为 JSON.
fetch('http://api.openweathermap.org/data/2.5/weather?q=Traralgon&appid=a211b9a621afd7714296d94616623dea&units=metric')
.then(function (response) {
// parsing the body of response object
return response.json();
})
.then(function (response) {
console.log('sucess', response.main);
})
.catch(function (err) {
console.warn('Something went wrong.', err);
});