calcメソッドでは、まず、XMLHttpRequestオブジェクトを作成する。このソースコードは、次のようになる。
if (window.XMLHttpRequest)
{
// ブラウザ内蔵型の場合
req = new XMLHttpRequest();
}
else if (window.ActiveXObject)
{
try
{
req = new ActiveXObject("MXSML2.XMLHTTP");
}
catch (e)
{
try
{
req = new ActiveXObject("Microsoft.XMLHTTP");
}
catch (e) {}
}
}
if (req == null)
{
alert("XMLHttpRequestオブジェクトが取得できません");
return;
}
やや冗長なコードになっているのは、XMLHttpRequestオブジェクトが「ブラウザ内蔵のオブジェクトである場合」と「ActiveXコントロールで構成されている場合」の2通りがあるからだ。
ブラウザ内蔵型の場合には、次のようにしてオブジェクトを生成できる。
req = new XMLHttpRequest();
一方で、ActiveXコントロールとして構成される場合――Internet Explorer 6.0以下の場合――には、バージョンによってコントロールの種類が異なり、次のいずれかの方法でインスタンスを生成する。
req = new ActiveXObject("MXSML2.XMLHTTP");
または
req = new ActiveXObject("Microsoft.XMLHTTP");
XMLHttpRequestオブジェクトは非同期通信をサポートしており、受信ステータスが変化するとイベントが発生する。このイベントハンドラは、onreadystatechangeプロパティで設定する。
リスト1では、次のようにstatechangeというメソッドを呼び出すようにしてある。statechangeメソッドの内容については後述する。
req.onreadystatechange = statechange;
Copyright © ITmedia, Inc. All Rights Reserved.