4

XHR オブジェクトを使用して、"4" (完全)以外でインターセプトonreadystatechangeしたことがありますか?readyState

可能性のあるさまざまな値で関数をトリガーしたことがあるかどうか知りたいです。他の状態の実際の使用は想像できません。それらは何かをするのにいくらか役に立ちますか?

実用的な例があれば教えてください。

私はこれらについて話している

  • 0: リクエストは初期化されていません
  • 1: サーバー接続が確立されました
  • 2: リクエストを受け取りました
  • 3: リクエストの処理
  • 4: リクエストが終了し、レスポンスの準備ができています
4

1 に答える 1

3

通知目的で開発したイントラネットで使用しています。状態 3 をインターセプトすることで、リクエストが開始されたことをユーザーに通知できます。

また、リクエストの送信時間を計るためにも使用します。状態 3 と 4 の間の経過時間を表示します。

MooTools を使用しているので、Request クラスを拡張して onStateChange イベントを発生させました。

var EarlyRequest = new Class({Extends: Request,
 onStateChange: function() {
  this.fireEvent("onStateChange", [this.xhr.readyState]);
  this.parent();
 }
});

追記で。あなたが投稿した状態の定義 (w3cschools から) は誤解を招くものです。これらは私にとってより明確です ( http://www.w3.org/TR/XMLHttpRequest/#statesから):

  • UNSENT (数値 0) オブジェクトが構築されました。

  • OPENED (数値 1) open() メソッドが正常に呼び出されました。この状態の間、リクエスト ヘッダーは setRequestHeader() を使用して設定でき、リクエストは send() メソッドを使用して行うことができます。

  • HEADERS_RECEIVED (数値 2) すべてのリダイレクト (存在する場合) が追跡され、最終応答のすべての HTTP ヘッダーが受信されました。オブジェクトのいくつかの応答メンバーが利用できるようになりました。

  • LOADING (数値 3) レスポンスエンティティボディを受信中です。

  • DONE (数値 4) データ転送が完了したか、転送中に問題が発生しました (無限リダイレクトなど)。

于 2010-12-22T14:21:29.453 に答える