AJAX - onreadystatechangeイベント


onreadystatechange イベント

リクエストがサーバーに送信されると、レスポンスに基づいたタスクを実行する必要があります。

readyState が変化するたびに、onreadystatechange イベントがトリガーされます。

readyState プロパティには XMLHttpRequest の状態情報が格納されます。

以下は XMLHttpRequest オブジェクトの3つの重要なプロパティです:

プロパティ 説明
onreadystatechange 関数(または関数名)を格納し、readyState プロパティが変化するたびにその関数が呼び出されます。
readyState

XMLHttpRequest の状態を格納します。0 から 4 に変化します。

  • 0: リクエスト未初期化
  • 1: サーバー接続確立済み
  • 2: リクエスト受信済み
  • 3: リクエスト処理中
  • 4: リクエスト完了、レスポンス準備完了
status 200: "OK"
404: ページが見つかりません

onreadystatechange イベントでは、サーバーレスポンスが処理の準備ができたときに実行するタスクを指定します。

readyState が 4 でステータスが 200 の場合、レスポンスの準備ができていることを示します:

サンプル

xmlhttp.onreadystatechange=function() { if (xmlhttp.readyState==4 && xmlhttp.status==200) { document.getElementById("myDiv").innerHTML=xmlhttp.responseText; } }

試してみる »

注意:onreadystatechange イベントは 4 回(0 - 4)トリガーされます。それぞれ:0-1、1-2、2-3、3-4 で、readyState の各変化に対応します。


コールバック関数を使用する

コールバック関数とは、別の関数に引数として渡される関数です。

ウェブサイトに複数の AJAX タスクが存在する場合は、XMLHttpRequest オブジェクトを作成するための標準関数を書き、各 AJAX タスクに対してその関数を呼び出す必要があります。

その関数呼び出しには、URL と、onreadystatechange イベント発生時に実行するタスク(呼び出しごとに異なる場合があります)を含める必要があります:

サンプル

function myFunction() { loadXMLDoc("/try/ajax/ajax_info.txt",function() { if (xmlhttp.readyState==4 && xmlhttp.status==200) { document.getElementById("myDiv").innerHTML=xmlhttp.responseText; } }); }

試してみる »
その他の拡張