XMLHttpRequestのさまざまな準備状態は何を意味し、どのように使用できますか?


113

XMLHttpRequest5 readyState秒あり、そのうちの1つだけを使用します(最後の1つ4)。

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

回答:


172

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

https://www.w3schools.com/js/js_ajax_http_response.aspから)

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

いくつかのXMLHttpRequestの実装では、部分的に受信した応答を見てみましょうことがありますが、これは普遍的にサポートされておらず、依拠すべきではありません。responseTextreadyState==3


5
転送のエラーは、readyStateを4に更新します。ただし、完全に中断された転送は、readyStateを0にリセットします。したがって、リダイレクトの結果である転送のエラーは、実際には「エラー」ではなく、ロギングを無視することを選択できます。 / xhrのreadyStateが0の場合にエラーを報告します。これは少し壊れやすく、すべてのイベント/エラーのロギングが「必須」または「ナイスナイ」のどちらであるかによって、走行距離は異なります。それは後者だ場合は、0のreadyStateのと一緒にエラーの可能性があります珍しいイベント失うことができ
グレッグ・ペティット

2
彼のアドバイスを@MattBiancoに+1してください。また、Mozilla Developer Network MDNは、JavaScript / HTML / CSSのニーズすべてに対して、間違いなく最も人気があり信頼できる参照サイトの1つであることも付け加えておきます。グーグル検索を行うときは、クエリの先頭に「mdn」を追加すると、頭痛の種を省くことができます。
DondeEstaMiCulo、2014

@GregPettit、readystate 0を使用してインターネットに接続できない場合、または「リクエストが初期化されていない」理由が存在する可能性があります
Vishal Sharma 14

4
@vishalsharma-思い出しますが、リクエストが初期化されていない限り、readystateは0です。その後、他の「完了」(成功またはエラーによる)は、readystateを4に更新します。したがって、転送開始後にインターネットが失われると、0に戻されるのではなく、4に反転します。試みても、0のままです。ハンドシェイク後にのみ1に移動します。
Greg Pettit 2014

readyState 2の説明は間違っています-または少なくとも完全に誤解を招く。Shureリクエストは送信されましたが、これらの状態は実際にはすべての最終応答ヘッダーが受信されたことを示しています。
INTA

32

キーロンの回答にはw3schoolsの参考文献が含まれています。誰も頼りにしない、 ボビンスの答えはリンクを与えます、それは実際にIEのネイティブ実装を伝えます、

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

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

UNSENT(数値0)
オブジェクトは作成されました。

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

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

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

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

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


@CharlesWood、私にとっての課題はここでしたStackoverflowマークダウンエディターはw3cへの参照を受け入れません..チェックアウトするため、goo.glから短いURLを入力します...直接入力することができない理由がわかりませんw3c url ...
Vishal Sharma 14

ええと、サンドボックスで試してみたところ、うまくいったようです。
Charles Wood 14

22

オリジナルの決定的なドキュメント

012だけあなたがこれまでと呼ばれるてきた要求をするために必要な方法の何を追跡します。

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

readyState 4は、意味を持つ唯一のものです。

(*:readyStateを確認するために考えられる唯一の考えられる使用法3は、サーバーエンドで何らかの形の生命を通知することです。そのため、完全な応答を受け取るまで待機する時間を増やす可能性があります。)


1

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

0:リクエストが初期化されていません

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

2:リクエストを受け取りました

3:リクエストの処理

4:要求が終了し、応答の準備ができている

ステータス200:「OK」

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


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

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

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.