進行中のhttp取得リクエスト中(ページが完全にロードされる前)に単一ページの角度アプリケーションで、ページをリロードすると、すべてのhttpリクエストのerrorcallbackが呼び出されます。私はGoogle Chromeを使用します。 下のコードをhtmlファイルに保存し、問題の再現のために開いた直後にページをリロードしてください。 これは、呼び出されているすべてのAPIからのアラートを表示するため、ページ全体がブレークします。 保留中のHTTPリクエストが50件ある場合、httpリクエスト中にページをリロードすると50件のエラーアラートが表示されます。http getのerrorCallBack機能からアラートを削除する必要はありません。すべてのajax http要求が完了した後にページをリロードすると、エラーは表示されません。 この問題を回避するのを手伝ってください。保留中のhttpリクエスト中に角度のjsページリロードエラー
<div ng-app="iceApp" ng-controller="allCharacterController as myCharacter">
<input type="text" id="search1" ng-model="search.name">
<div ng-repeat="book in myCharacter.character | filter : search">
{{book.name}}
</div>
</div>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.5.8/angular.min.js"></script>
<script type="text/javascript">
var myApp = angular.module('iceApp', []);
myApp.controller('allCharacterController',['$http',function($http) {
var main = this;
this.character=[];
this.baseUrl = 'https://www.anapioficeandfire.com/api/';
// there were 50 pages to get data from thats why i have made a loop
this.allCharacters = function(){
for(i=1;i<50;i++){
$http({
method: 'GET',
url: main.baseUrl+"characters?page="+i+"&pageSize=50"
})
.then(function successCallback(response) {
// this callback will be called asynchronously
// when the response is available
console.log(response.data);
if(response.data.length>0){
main.character.push.apply(main.character,response.data);
}
}, function errorCallback(response) {
// called asynchronously if an error occurs
// or server returns response with an error status.
alert("some error occurred. Check the console.");
console.log(response);
});
}
}// end load all blogs
this.allCharacters();
}])
</script>
ps:私は本当にこれに打たれました。私を助けてください。上記は私が問題を再現するために作った最小限の質問です。私が働いてきた 実際のWebアプリケーション:
アラートと他のモーダルダイアログは、破壊的なので注意して使用してください。彼らの突然の登場により、ユーザーは現在のタスクを停止し、ダイアログコンテンツに集中することになります。時にはこれは良いことですが**ほとんどの場合、それは不要で非常に厄介です**インライン展開やトーストのような代替案を検討してください。 – georgeawg
*リロードが意図的であるため、単一のアラートであっても表示される優れたソリューションを探しています*最も簡単な解決策はアラートを削除することです。どのようなエラーが発生していますか、ユーザーはなぜ中断する必要がありますか? – georgeawg
その後、私は間違いを訂正しました。私は実際に意味しています---私はまだリロードが意図的であるため**単一の警告を表示しない**より良い解決策を探しています_ –