0

メッセージを投稿するためのエラー ハンドラがあります。

 $(document).ajaxError(function (e, xhr, options) {
  window.postMessage(....);  
});

フェッチ呼び出しの 1 つが 401 を返しています

this.fetch = function(url) {
return fetch(url, { 
  }
}).then(function(response) {
  return response.json();
})

応答を確認すると、ステータスは 401 ですが、response.json() は " Uncaught (in promise) SyntaxError: Unexpected end of JSON input." をスローしています。このため、ajaxError は発生しません。

予想される動作: fetch 呼び出しからステータス 200 を取得しない場合、document.ajaxError にメッセージを投稿してもらいたい。

オーバーライド機能を持つwrapper.jsがあります

 window.fetch = (function(arg) {


 }(window.fetch)

この関数内でこの例外をグローバルにキャッチできますか?

4

1 に答える 1

0

コメントによると、jquery に由来しないため、ajaxError ハンドラーでは実行できませんでした。Window.fetch ラッパー内で実行できました

 window.fetch = (function (original)) {
  ...............

  return original.apply(this, args).then(function (response)) {

      if(response.status !== 200)
       {
           window.postMessage({ event_type: 'request:failed', status: response.status); 
       }   
   }
}
于 2019-07-11T12:34:54.000 に答える