すべてのエラーを 1 か所で処理したいと考えています。
すべてのリクエストを処理する 1 つの場所で、エラー ハンドラを XMLHttpRequest オブジェクト (またはそのようなもの) にアタッチすることは可能ですか?
ありがとう
すべてのエラーを 1 か所で処理したいと考えています。
すべてのリクエストを処理する 1 つの場所で、エラー ハンドラを XMLHttpRequest オブジェクト (またはそのようなもの) にアタッチすることは可能ですか?
ありがとう
XMLHttpRequest オブジェクトが 1 つだけの場合は、readystatechange
イベントをリッスンして検出し、操作が完了すると、status
プロパティを読み取ってエラーを検出します。
ここで、すべてのオブジェクトでこれを行いたい場合は、発生するすべてのreadystatechange
イベントをリッスンする必要があります。つまり、XMLHttpRequest が作成または初期化された場合は、それぞれのイベントに登録します。これは、XMLHttpRequest プロトタイプの open メソッドをオーバーライドすることで実行できます。これにより、イベント リスナーが登録され、古い open メソッドが呼び出されます。
そのために次のコードを使用しました(Firefoxで):
(function(open) {
XMLHttpRequest.prototype.open = function(method, url, async, user, pass) {
this.addEventListener("readystatechange", function() {
if (this.readyState==4 && (this.status != 200 && this.status != 301 && this.status != 302)) {
alert("Error: "+this.statusText)
}
}, false);
open.call(this, method, url, async, user, pass);
};
})(XMLHttpRequest.prototype.open);
(これは、 XMLHttpRequest オブジェクトごとに 1 回だけ呼び出されるか、イベントが複数回登録されていることを前提としていopen
ます。安全を確保したい場合は、おそらく を追加して open-function をリセットできますthis.open = open;
)