Обработка ошибок в HTTP Ajax Call с использованием $fetch Javascript
Я пытался решить проблемы, связанные с сетью, в HTTP-вызове ajax. Итак, я временно остановил службу соответствующего API в IIS и попытался вызвать закрытый API - http://localhost:1000/GetData
,
fetch("http://localhost:1000/GetData")
.then(handleErrors)
.then(function(response) {
return response.Json();
}).catch(function(error) {
console.log(error);
});
Я тоже пробовал следующий код
fetch("http://localhost:1000/GetData")
.then(response => {
if(response) {
if (response.status === 200) {
alert('Super');
return response.json();
} else {
alert('Hai');
return '';
}
} else {
alert('Oooops');
return '';
}
})
.catch(function(error) {
console.log(error);
});
Но его сбой и прямое попадание в блок захвата, не вызывая каких-либо alert
и его выбрасывание ошибки. Кроме того response.json();
находится в блоке Успех, я не знаю, как это выполняется.
TypeError: response.json is not a function
Stack trace:
onFetchError/<@http://192.168.4.159:3000/app.0df2d27323cbbeada2cd.js:9946:13
Пожалуйста, помогите мне, как проверить код состояния и как обработать ошибку сети (например, сеть недоступна 404 и т. Д.)
Реферальный сайт: https://www.tjvantoll.com/2015/09/13/fetch-and-errors/
1 ответ
Основываясь на этой проблеме на Github, вы можете вместо этого попытаться определить типы ошибок в блоке catch. Итак, что-то вроде этого может работать для вашего случая:
fetch("http://localhost:1000/GetData")
.then(response => {
alert("Super");
return response.json();
})
.catch(err => {
const errStatus = err.response ? err.response.status : 500;
if (errStatus === 404){
// do something
} else {
// do another thing
}
});