#angular #typescript #ionic-framework #navigator
#angular #typescript #ionic-framework #навигатор
Вопрос:
При нажатии кнопки отправки я хотел бы сделать запрос post, когда пользователь находится в Сети. если пользователь находится в автономном режиме, я хотел бы сохранить отправленные данные в локальном хранилище. К сожалению, я получаю ошибку 500 при нажатии на кнопку отправки после выключения моего Wi-Fi. Это работает, когда я отключаюсь от сети браузера
onSubmit() {
let postData = [];
for (var groupId in this.deltasByGroupId) {
if (!this.deltasByGroupId.hasOwnProperty(groupId)) { continue }
for (var k in this.deltasByGroupId[groupId]) {
if (!this.deltasByGroupId[groupId].hasOwnProperty(k)) { continue }
let secs = this.deltasByGroupId[groupId][k];
var item1 = secs["items"]
for (var j in item1) {
var item2 = item1[j]
for (var l in item2) {
var listItem = item2["items"]
for (var li in listItem) {
this.model = new MeasurementChange(listItem[li].id, listItem[li].percent_complete);
postData.push(this.model);
}
}
}
}
}
if(navigator.onLine){
this.pEntryService.postEntries(postData).subscribe(res => {
alert("Data submitted successfully")
})
} else{
this.storage.set('cashedData', postData).then(res => {
alert("Data successsfully stored locally")
})
}
}
Комментарии:
1. Затем вы должны проверить отправленные данные и код на стороне сервера, почему он выдает «внутреннюю ошибку сервера»
2. Ошибка 500 является ошибкой сервера, поэтому значение navigator.onLine равно true. Если нет, можете ли вы воспроизвести это на stackblitz?
3. @AdamFoerster это работает, когда я выхожу из сети браузера в автономном режиме, но не работает, когда я отключаю свой Wi-Fi
4.
navigator.onLine
ненадежен, он работает по-разному в зависимости от браузера. Вы действительно должны полагаться на сбой запроса и реагировать соответствующим образом.