web-dev-qa-db-ja.com

XMLHttpRequestの異なるreadystateは何を意味し、どのように使用できますか?

XMLHttpRequestには5つのreadyStateがあり、そのうちの1つだけを使用します(最後の1つ、4)。

他の目的は何ですか?また、どの実用的なアプリケーションで使用できますか?

112
Marius

readyState値の完全なリストは次のとおりです。

State  Description
0      The request is not initialized
1      The request has been set up
2      The request has been sent
3      The request is in process
4      The request is complete

(from https://www.w3schools.com/js/js_ajax_http_response.asp

実際には、4以外はほとんど使用しません。

一部XMLHttpRequestの実装では、readyState==3のときにresponseTextで部分的に受信した応答を見ることができますが、これは普遍的にサポートされていないため、頼らないでください。

171
Kieron

kieron の答えにはw3schools refが含まれます。誰も頼らない、 bobince の答えはlinkを与え、これは実際にIEのネイティブ実装を伝えます

そのため、readystateが何を表すかを正しく理解するために引用された元のドキュメントは次のとおりです。

XMLHttpRequestオブジェクトにはいくつかの状態があります。 readyState属性は、現在の状態を返す必要があります。これは、次の値のいずれかでなければなりません。

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

OPENED(数値1)
open()メソッドが正常に呼び出されました。この状態の間、setRequestHeader()を使用して要求ヘッダーを設定し、send()メソッドを使用して要求を作成できます。

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

LOADING(数値3)
応答エンティティ本体を受信して​​います。

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

こちらをお読みください: W3C ReadyStateの説明

31
Vishal Sharma

オリジナルの最終ドキュメント

01および2は、これまでに呼び出したリクエストを行うために必要なメソッドの数のみを追跡します。

3は、サーバーの応答が入り始めたことを示します。しかし、WebページからXMLHttpRequestオブジェクトを使用している場合、その情報でできることはほとんどありません(*)部分的なデータを読み取ることができる拡張プロパティにアクセスできません。

readyState 4だけが意味を持ちます。

(*:readyState 3を確認するために考えられる唯一の考えられる使用については、サーバーエンドで何らかの形態のライフを通知することです。そのため、受け取ります。)

22
bobince

onreadystatechange readyStateプロパティが変更されるたびに自動的に呼び出される関数(または関数の名前)を格納しますreadyStateはXMLHttpRequestのステータスを保持します。 0から4への変更:

0:初期化されていないリクエスト

1:サーバー接続が確立されました

2:リクエストを受信しました

3:リクエストの処理

4:要求が終了し、応答の準備ができました

ステータス200:「OK」

404:ページが見つかりません

1
omertalmi
  • 0:UNSENTクライアントが作成されました。 open()はまだ呼び出されていません。
  • 1:OPENED open()が呼び出されました。
  • 2:HEADERS_RECEIVED send()が呼び出され、ヘッダーとステータスが利用可能です。
  • 3:ダウンロード中。 responseTextは部分的なデータを保持します。
  • 4:完了操作は完了しました。

(https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/readyStateから)

0
Khurshid Ansari