「JavaScript/XMLHttpRequest」の版間の差分

削除された内容 追加された内容
Ef3 (トーク | 投稿記録)
→‎高度なコード: イベントリスナーによるイベントハンドリング、Fix typo
タグ: 2017年版ソースエディター
Ef3 (トーク | 投稿記録)
Fix typo; s/readstatus/readyStatus/7i
タグ: 2017年版ソースエディター
128 行
その規格の意味により、とりあえず上記の動作確認では「200」や「4」と表示されれば、成功である。
 
規格について抜粋的に説明すると、readStatereadyStateプロパティが4なら、すべての応答データを取得できている<ref>山田祥寛『JavaScript本格入門』、2019年8月17日 初版 第6刷発行、P395</ref>という意味である。
 
なので、とりあえず、成功なら 4 が表示されているハズである。
166 行
 
 
==== readstatereadyState プロパティ ====
readstatereadyState プロパティについては、次表のように仕様が決まっています。
 
:{|class="wikitable"
|+ readstatereadyState プロパティの意味
! 戻り値 !! 意味
|-
| XMLHttpRequest.UNSENT(数値 0) || オブジェクトが構築された。
| 0 || 未初期化(openメソッドの前)
|-
| XMLHttpRequest.OPENED(数値 1) || open()メソッドが正常に呼び出されました。この状態では、setRequestHeader()を使ってリクエスト・ヘッダーを設定し、send()メソッドを使ってフェッチを開始することができます。
| 1 || ロード中(openメソッドの呼び出し後、かつ、まだsendメソッドは呼び出されていない)
|-
| XMLHttpRequest.HEADERS_RECEIVED(数値 2) || すべてのリダイレクト(もしあれば)が行われ、応答のすべてのヘッダーが受信されていること。
| 2 || send メソッドの呼び出し後
|-
| XMLHttpRequest.LOADING(数値 3) || レスポンスボディの受信中です。
| 3 || ダウンロード中(一部の応答を取得中であるという意味)
|-
| XMLHttpRequest.DONE(数値 4) || データの転送が完了した、または転送中に何か問題が発生した(無限リダイレクトなど)。
| 4 || すべてのデータを取得済み (通信完了)
|}
 
HTTPステータスコードは、いくつもありますが、今回のコードに関係ありそうな主要なものは下記の通りです。下記の表以外にもいくつもありますが、要するに「200」であれば「成功」ですし、「200」以外なら通常は失敗です。
 
また、「XMLHttpRequest.DONE」でデータの転送が完了、あるいは転送中に何か問題が発生し(無限リダイレクトなど)異常終了です。
また、「4」で通信完了します。
 
 
なお、普通の通信なら readstatereadyState プロパティは 0XMLHttpRequest.UNSENT1XMLHttpRequest.OPENED2XMLHttpRequest.HEADERS_RECEIVED3XMLHttpRequest.LOADING4XMLHttpRequest.DONE の順番で変化していきます(サンプルコードの表示結果もこのような順番になっています)。
 
==== status プロパティ ====
:{|class="wikitable"
|+ status プロパティの意味
! 戻り値 !! 意味
202 ⟶ 203行目:
|}
 
上述の readstatereadyState プロパティおよび status プロパティの説明を合わせて考えれば、readstatereadyState 「4」および status 「200」ならば、とりあえず通信の環境構築には成功しています。
 
==== send()メソッドなど ====
334 ⟶ 335行目:
 
== 外部リンク ==
* [https://developer.mozilla.org/ja/docs/Web/API/XMLHttpRequest XMLHttpRequest - Web API -- MDN]
* [https://xhr.spec.whatwg.org/ WHATWG::XMLHttpRequest Living Standard]