Ajaxを理解する4つのポイントWeb2.0で変わるWebプログラミングの常識(2/6 ページ)

» 2006年08月10日 08時00分 公開
[大澤文孝,ITmedia]

1. XMLHttpRequestオブジェクトの作成

 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");


2. 受信のステータスが完了したことを知るイベントハンドラの設定

 XMLHttpRequestオブジェクトは非同期通信をサポートしており、受信ステータスが変化するとイベントが発生する。このイベントハンドラは、onreadystatechangeプロパティで設定する。

 リスト1では、次のようにstatechangeというメソッドを呼び出すようにしてある。statechangeメソッドの内容については後述する。

req.onreadystatechange = statechange;


Copyright © ITmedia, Inc. All Rights Reserved.