XMLHttpRequest

メモ:  Category:javascript

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

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

リクエストできるのは同一ドメインに限られています。また、 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リクエストヘッダを付加、または置き換えます。

bluenote by BBB