为 "city not found" 错误写入条件
Write conditional for a "city not found" error
我正在研究和构建一个使用 openweathermap 的项目的天气日志应用程序。
当我写的邮政编码不属于我 API 的国家/地区时,控制台记录“cod:404 message:city 未找到”,但我不知道如何将其显示给用户。我知道我需要在我的 postData 代码之前写一个带有警告(错误的邮政编码!)的条件,但我被困在这里...
function action(e){
const postalCode = document.getElementById('zip').value;
const feelings = document.getElementById('feelings').value;
console.log(newDate);
getTemp(baseUrl,postalCode, apiKey)
.then(function (data){
if(/*Message error*/){
alert('Wrong zip code, try again!');
}
//Route
postData('http://localhost:8000/addData', { date: newDate, temp: data.main.temp, feel: feelings})
.then(function(){
//User Interface
updateUI()
})
})
}
enter image description here
你可以这样使用:
getTemp(baseUrl,postalCode, apiKey)
.catch(function (error){
alert('Wrong zip code, try again!');
console.log(error);
})
.then((data) => {
postData('http://localhost:8000/addData', { date: newDate, temp: data.main.temp, feel: feelings})
.then(function(){
//User Interface
updateUI()
})
})
由于响应是包含cod
和message
的对象,您可以检查if (data.cod === 404) {
然后显示你的警报。
注意一定要return;
或者把postData
放在else
里面,否则alert显示
后还是会执行
@Yehr59 的回答有问题,getTemp
可能不会抛出错误,因此它不会到达 .catch
函数。因此,在 .then
中,您可以执行我上面在此答案中提到的检查。
你会得到这样的结果:
getTemp(baseUrl,postalCode, apiKey)
.then(function (data){
if(String(data.cod) === '404'){
alert('Wrong zip code, try again!');
} else {
//Route
postData('http://localhost:8000/addData', { date: newDate, temp: data.main.temp, feel: feelings})
}
我还在 String
周围包裹了 data.cod,所以它始终是一个字符串。我们无法比较
"404" === 404 // false
编辑:另一种方法是修改您的 getTemp
函数,如果响应代码为 404,它会 throw
一个错误,然后您知道一旦 .then 被调用,它就成功了,如果调用 .catch,您将处理一个错误
我正在研究和构建一个使用 openweathermap 的项目的天气日志应用程序。
当我写的邮政编码不属于我 API 的国家/地区时,控制台记录“cod:404 message:city 未找到”,但我不知道如何将其显示给用户。我知道我需要在我的 postData 代码之前写一个带有警告(错误的邮政编码!)的条件,但我被困在这里...
function action(e){
const postalCode = document.getElementById('zip').value;
const feelings = document.getElementById('feelings').value;
console.log(newDate);
getTemp(baseUrl,postalCode, apiKey)
.then(function (data){
if(/*Message error*/){
alert('Wrong zip code, try again!');
}
//Route
postData('http://localhost:8000/addData', { date: newDate, temp: data.main.temp, feel: feelings})
.then(function(){
//User Interface
updateUI()
})
})
}
enter image description here
你可以这样使用:
getTemp(baseUrl,postalCode, apiKey)
.catch(function (error){
alert('Wrong zip code, try again!');
console.log(error);
})
.then((data) => {
postData('http://localhost:8000/addData', { date: newDate, temp: data.main.temp, feel: feelings})
.then(function(){
//User Interface
updateUI()
})
})
由于响应是包含cod
和message
的对象,您可以检查if (data.cod === 404) {
然后显示你的警报。
注意一定要return;
或者把postData
放在else
里面,否则alert显示
@Yehr59 的回答有问题,getTemp
可能不会抛出错误,因此它不会到达 .catch
函数。因此,在 .then
中,您可以执行我上面在此答案中提到的检查。
你会得到这样的结果:
getTemp(baseUrl,postalCode, apiKey)
.then(function (data){
if(String(data.cod) === '404'){
alert('Wrong zip code, try again!');
} else {
//Route
postData('http://localhost:8000/addData', { date: newDate, temp: data.main.temp, feel: feelings})
}
我还在 String
周围包裹了 data.cod,所以它始终是一个字符串。我们无法比较
"404" === 404 // false
编辑:另一种方法是修改您的 getTemp
函数,如果响应代码为 404,它会 throw
一个错误,然后您知道一旦 .then 被调用,它就成功了,如果调用 .catch,您将处理一个错误