XMLHttpRequest
には5つのreadyState
があり、そのうちの1つだけを使用します(最後の1つ、4
)。
他の目的は何ですか?また、どの実用的なアプリケーションで使用できますか?
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
で部分的に受信した応答を見ることができますが、これは普遍的にサポートされていないため、頼らないでください。
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の説明
0
、1
および2
は、これまでに呼び出したリクエストを行うために必要なメソッドの数のみを追跡します。
3
は、サーバーの応答が入り始めたことを示します。しかし、WebページからXMLHttpRequest
オブジェクトを使用している場合、その情報でできることはほとんどありません(*)部分的なデータを読み取ることができる拡張プロパティにアクセスできません。
readyState 4
だけが意味を持ちます。
(*:readyState 3
を確認するために考えられる唯一の考えられる使用については、サーバーエンドで何らかの形態のライフを通知することです。そのため、受け取ります。)
onreadystatechange readyStateプロパティが変更されるたびに自動的に呼び出される関数(または関数の名前)を格納しますreadyStateはXMLHttpRequestのステータスを保持します。 0から4への変更:
0:初期化されていないリクエスト
1:サーバー接続が確立されました
2:リクエストを受信しました
3:リクエストの処理
4:要求が終了し、応答の準備ができました
ステータス200:「OK」
404:ページが見つかりません
(https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/readyStateから)