AJAX - XMLHttpRequest オブジェクト

❮ 前章へ 次章へ ❯

AJAXの要はXMLHttpRequestオブジェクトです。


XMLHttpRequest オブジェクト

最新のブラウザはすべてXMLHttpRequestオブジェクトをサポートしています。

XMLHttpRequestオブジェクトは、背後でサーバとデータ交換するために使用します。これは、ページ全体をリロードすることなく、 Webページの一部を更新することができることを意味しています。


XMLHttpRequest オブジェクトの作成

最新のブラウザ(Chrome、IE7+、Firefox、Safari、Opera)には、すべてXMLHttpRequestオブジェクトが組み込まれています。

XMLHttpRequestオブジェクトを作成するための構文:

variable = new XMLHttpRequest();

古いバージョンのInternet Explorer(IE5とIE6)はActiveXオブジェクトを使用します:

variable = new ActiveXObject("Microsoft.XMLHTTP");

IE5とIE6を含むすべてのブラウザで処理するには、ブラウザがXMLHttpRequestオブジェクトをサポートしているかどうかを確認します。 サポートしている場合はXMLHttpRequestオブジェクトを作成し、そうでない場合はActiveXObjectを作成します:

var xhttp;
if (window.XMLHttpRequest) {
    xhttp = new XMLHttpRequest();
    } else {
    // code for IE6, IE5
    xhttp = new ActiveXObject("Microsoft.XMLHTTP");
}
Try it Yourself »

ドメイン間アクセス

セキュリティ上の理由から、最新のブラウザではドメイン間のアクセスを許可していません。

つまり、ロードしようとしているWebページとXMLファイルは、同じサーバ上に配置していなければなりません。

W3Schoolsの例では、すべてW3SchoolsドメインにあるXMLファイルを開きます。

上の例を自分のWebページの1つで使いたい場合は、ロードするXMLファイルを自分のサーバに配置しなければなりません。


古いバージョンのInternet Explorer(IE5とIE6)

古いバージョンのInternet Explorer(IE5とIE6)はXMLHttpRequestオブジェクトをサポートしていません。

IE5とIE6で処理するには、ブラウザがXMLHttpRequestオブジェクトをサポートしているかどうかを確認するか、ActiveXObjectを作成します:

if (window.XMLHttpRequest) {
    // code for modern browsers
    xmlhttp = new XMLHttpRequest();
 } else {
    // code for old IE browsers
    xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
}
Try it Yourself »

XMLHttpRequest オブジェクト・メソッド

メソッド 説明
new XMLHttpRequest() 新しいXMLHttpRequestオブジェクトを作成します
abort() 現在のリクエストをキャンセルします
getAllResponseHeaders() ヘッダ情報を返します
getResponseHeader() 指定のヘッダ情報を返します
open(method, url, async, user, psw) リクエストをを指定します

method: リクエスト・タイプ GET か POST
url: ファイルの場所
async: true(非同期)またはfalse(同期)
user: オプション ユーザー名
psw: オプション パスワード
send() リクエストをサーバに送信します
GET リクエストに使用
send(string) リクエストをサーバに送信します
POST リクエストに使用
setRequestHeader() 送信するヘッダーにラベルと値のペアを追加します

XMLHttpRequest オブジェクト・プロパティ

プロパティ 説明
onreadystatechange readyStateプロパティが変更されたときに呼び出す関数を定義します
readyState XMLHttpRequestのステータスには次のものがあります。
0: リクエストが初期化されていません
1: サーバー接続が確立されました
2: リクエストを受け取りました
3: リクエストを処理中です
4: リクエストが完了し、レスポンスが準備完了です
responseText レスポンスデータを文字列として返します
responseXML レスポンスデータをXMLデータとして返します
status リクエストのステータス番号を返します
200: "OK"
403: "Forbidden"
404: "Not Found"
完全なリストについては、Http メッセージ・リファレンスをご覧ください
statusText ステータ・ステキスト("OK" や "Not Found"など)を返します

❮ 前章へ 次章へ ❯