XMLHttpRequest

Ajax(エイジャックス)の核となるサーバとの通信を受け持つのが、XMLHttpRequestになります。 このXMLHttpRequestは、画面遷移をしないでサーバーとのデータ送受をすることが出来ます。

XMLHttpRequestを使用するには、いくつかの条件があります。

  1. リクエストできるのは同一ドメインに限られています。
  2. XMLHttpRequestは、ブラウザによって実装状況が違います。

WindowsのIEの場合、次のように作成します。

//オブジェクトの作成
var xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");

//XMLHttpRequest.readyStateが変化した時に発生するイベントハンドラ
xmlhttp.onreadystatechange = httpEvent;

//レスポンスデータ処理用コールバック関数
function httpEvent(){
    if(xmlhttp.readyState == 4) {
    }
}

//リクエスト
xmlhttp.open("GET", url , true);
xmlhttp.send();

Mozilla/Gecko(Firefox)などでは、次のように作成します。

//オブジェクトの作成
var xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");

//XMLHttpRequest.readyStateが変化した時に発生するイベントハンドラ
xmlhttp.onreadystatechange = httpEvent;

//レスポンスデータ処理用コールバック関数
function httpEvent(){
    if(xmlhttp.readyState == 4) {
    }
}

//リクエスト
xmlhttp.open("GET", url , true);
xmlhttp.send();

XMLHttpRequestオブジェクトメンバ

各ブラウザで共通に使用できるメンバには、以下のものがあります。 それ以外のメンバは、下記ページを参考にしてください。

Mozilla/Gecko XMLHttpRequest object
Microsoft's XMLHTTP ActiveX object

プロパティ

onreadystatechange
イベントハンドラ。オブジェクトの状態が変化したときに実行される。
readyState
状態を示す。0 = uninitialized、1 = loading、2 = loaded、3 = interactive、4 = complete
responseText
HTTPレスポンスの内容を文字列として取得できる。
responseXML
HTTPレスポンスの内容をDOM(ドキュメントオブジェクト)として取得できる。
status
HTTPレスポンスステータスコード、200、404等を取得できる。
statusText
ステータスコードに対応するメッセージ、404の場合Not Found。

メソッド

abort()
通信を中断します。
getAllResponseHeaders()
HTTPレスポンスヘッダを文字列として取得します。
getResponseHeader(String header)
指定したヘッダの内容を取得します。
open(String method, String URL,boolean async,String user,String password)
指定したURLに接続、 async, user, passwordはオブションです。 methodはgetまたはpostを設定します。 asyncFlagは、通信を非同期とするかどうかのフラグです。falseにするとsendメソッド実行時、 通信完了まで処理がブロックされます。 userとpasswordは、Basic認証、Digest認証のユーザ名、パスワードです。
send(body)
bodyは、POSTメソッド使用時のデータを設定します。
setRequestHeader(String header,String value)
HTTPリクエストヘッダを付加、または置き換えます。