エンジニアになりたい

立派なエンジニアに憧れるへっぽこエンジニアのメモ書き

生のJavaScript で Ajax

Ajax を 生のJavaScriptで実装する方法をメモします。

まずは、XMLHttpRequest オブジェクトの生成です。

var req;
try {
        // IE7.0 以降とそれ以外のブラウザ
	req = new XMLHttpRequest();
} catch (e) {
	try {
                // IE6.0
		req = new ActiveXObject('Msxml12.XMLHTTP');
	} catch (e) {
                // IE5.5
		req = new ActiveXObject('Microsoft.XMLHTTP');
	}
}

こんな感じでブラウザによってインスタンスの生成を分けます。

次にXMLHttpRequest オブジェクトによる通信の状態が変化したタイミングで
呼び出されるコールバック関数を定義します。

XMLHttpRequest オブジェクト の onreadystatechange プロパティに定義します。

req.onreadystatechange = function() {
	if (req.readyState == 4) {
		if (req.status == 200) {
			// 通信が正常に完了したときの処理を書く

                        // レスポンスをテキストとして取得
                        var resText = req.responseText;

                        // レスポンスをXMLとして取得
                        var resXML = req.responseXML;
		} else {
			// 通信が正常に完了しなかった場合の処理を書く
		}
	} else {
                // 通信中の処理を書く
	}
};

readyState プロパティでは通信の状態を確認できます。
4 は処理の完了です。

status プロパティは応答ステータスが確認できます。
200は処理成功です。

次にGET でサーバにリクエストします。

req.open('GET', '[URL]', true);
req.send(null);

[URL]に、リクエストするURLを入れますが、クエリストリングなどでマルチバイト文字
など使う場合は
encodeURIComponent()
エンコードしましょう。

POSTの場合はこういう感じになります。

req.open('POST', '[URL]', true);
req.setRequestHeader('content-type', 'application/x-www-form-urlencoded;charset=UTF-8');
req.send('[body]');

コンテントタイプを指定してやる必要があるようなので指定して、
sendの引数に要求本文を渡します。
ここでも必要ならばエンコード処理をしましょう。

以上です。