「JavaScript/XMLHttpRequest」の版間の差分

削除された内容 追加された内容
編集の要約なし
→‎XMLHttpRequest: statusプロパティなどajax関連プロパティの一覧表
97 行
</syntaxhighlight>
 
:※ なお、上コード中のxhrは別に予約語ではなく、単なる変数名である。なので、「xhr」でなくとも他の変数名でも構わない。
 
 
次に、このコードに、webサーバを介してwebブラウザでアクセスすること。
120 行
 
 
この「200」や「4」は、JavaScriptの規格で意味が決まっている数字である(技術的な解説については、のちのセクションで後述する)
 
その規格の意味により、とりあえず上記の動作確認では「200」や「4」と表示されれば、成功である。
 
規格について抜粋的に説明すると、readStateプロパティが4なら、すべての応答データを取得できている<ref>山田よしひろ祥寛『JavaScript本格入門』、2019年8月17日 初版 第6刷発行、P395</ref>という意味である。
 
なので、とりあえず、成功なら 4 が表示されているハズである。
131 行
 
 
=== ミスの原因 ===
;よくあるミス
・ダブルクリック起動してしまっているミス<br>
141 ⟶ 142行目:
・サーバ立ち上げていないミス<br>
また、そもそもwebサーバが立ち上がっていない場合も当然ながら上記コードの動作確認には失敗するので、ローカルホスト自体[http://localhost http://localhost]にもアクセスしてみて、確認してみよう。サーバが立ち上がっているなら、webサーバ(XAMPPまたはApacheなど)の用意している画面(ロゴマークなどがある画面)が表示されるハズであるので、その画面が表示されるか確認してみよう。
 
 
 
 
=== 技術的な解説 ===
==== HTTPコマンド ====
「GET」とは、HTTPコマンドの一種です。HTTPコマンドには、主にデータ取得を目的とするために通信する「GET」と、データ送信のために通信する「POST」という、2種類があります。
 
なお、GETもPOSTもどちらとも、相手先サーバとの通信のために、送信をしています。このため、原理的には「GET」で送信をすることも可能です<ref>山田、P398</ref>。もっとも、なるべく本来の目的にあったHTTPコマンドを選んで使うほうが良いプログラムではあるでしょう。
 
また、GETコマンドは送信URLの末尾にデータを付加して
?キー名=値&
の形式でデータ送信できるのですが、しかし日本語などの2バイト文字や「&」や「?」を正しく扱えません。
 
それらの文字は encodeURIComponent() 関数などでエンコードができます。
 
 
readstate プロパティについては、次表のように仕様が決まっています。
 
{|class="wikitable"
|+ readstate プロパティの意味
! 戻り値 !! 意味
|-
| 0 || 未初期化(openメソッドの前)
|-
| 1 || ロード中(openメソッドの呼び出し後、かつ、まだsendメソッドは呼び出されていない)
|-
| 2 || send メソッドの呼び出し後
|-
| 3 || ダウンロード中(一部の応答を取得中であるという意味)
|-
| 4 || すべてのデータを取得済み
|}
 
 
HTTPステータスコードは、いくつもありますが、今回のコードに関係ありそうな主要なものは下記の通りです。下記の表以外にもいくつもありますが、要するに「200」であれば「成功」ですし、「200」以外なら通常は失敗です。
 
{|class="wikitable"
|+ status プロパティの意味
! 戻り値 !! 意味
|-
| 200 || 成功
|-
| 404 || リクエストされたリソースが見つからない (Not Found)<br>URLなどが間違っているのが原因
|-
| 500 || サーバーのエラー。サーバーダウンの場合もこれに該当。
|}
 
上述の readstate プロパティおよび status プロパティの説明を合わせて考えれば、readstate 「4」および status 「200」ならば、とりあえず通信の環境構築には成功しています。