onreadystatechange イベント

リクエストがサーバーに送信されると、いくつかの応答ベースのタスクを実行する必要があります。

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

readyState属性にはXMLHttpRequestのステータス情報が格納されます。

XMLHttpRequest オブジェクトの 3 つの重要なプロパティは次のとおりです:

PropertyDescription
onreadystatechange ストレージ関数 (または関数名)。readyState プロパティが変更されるたびに呼び出されます。
readyState

XMLHttpRequestのステータスを保存します。 0から4まで変化します。

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

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

  • 2: リクエストが受信されました

  • 3: リクエストは処理中です

  • 4 : リクエストは完了し、レスポンスは Ready になりました

ステータス200: "OK"
404: ページが見つかりません

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

readyState が 4 でステータスが 200 の場合、応答の準備ができていることを意味します:

Instance

<html>
<head>
<script type="text/javascript">
function loadXMLDoc()
{
var xmlhttp;
if (window.XMLHttpRequest)
  {// code for IE7+, Firefox, Chrome, Opera, Safari
  xmlhttp=new XMLHttpRequest();
  }
else
  {// code for IE6, IE5
  xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
  }
xmlhttp.onreadystatechange=function()
  {
  if (xmlhttp.readyState==4 && xmlhttp.status==200)
    {
    document.getElementById("myDiv").innerHTML=xmlhttp.responseText;
    }
  }
xmlhttp.open("GET","/asset/demo.ajax.php?dm=txt&act=getfruits",true);
xmlhttp.send();
}
</script>
</head>
<body>
<div id="myDiv"><h2>Let AJAX change this text</h2></div>
<button type="button" onclick="loadXMLDoc()">通过 AJAX 改变内容</button>
</body>
</html>

注: onreadystatechange イベントは、各変更に対応して 5 回 (0 ~ 4) トリガーされます。準備完了状態。


コールバック関数の使用

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

Web サイトに複数の AJAX タスクがある場合は、XMLHttpRequest オブジェクトを作成するための 標準 関数を作成し、AJAX タスクごとにその関数を呼び出す必要があります。

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

Instance

<html>

<head>
<script type="text/javascript">
var xmlhttp;
function loadXMLDoc(url,cfunc)
{
if (window.XMLHttpRequest)
  {// code for IE7+, Firefox, Chrome, Opera, Safari
  xmlhttp=new XMLHttpRequest();
  }
else
  {// code for IE6, IE5
  xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
  }
xmlhttp.onreadystatechange=cfunc;
xmlhttp.open("GET",url,true);
xmlhttp.send();
}
function myFunction()
{
loadXMLDoc("/asset/demo.ajax.php?dm=txt&act=getfruits",function()
  {
  if (xmlhttp.readyState==4 && xmlhttp.status==200)
    {
    document.getElementById("myDiv").innerHTML=xmlhttp.responseText;
    }
  });
}
</script>
</head>
<body>
<div id="myDiv"><h2>Let AJAX change this text</h2></div>
<button type="button" onclick="myFunction()">通过 AJAX 改变内容</button>
</body>
</html>