まず、"XMLHTTP読み込み" をクリックすると、
<a href="javascript:void(0);" onclick="AjaxSample1();">XMLHTTP読み込み</a>
の "onclick" イベントっていうのが発生して、
"JavaScript" 内の "AjaxSample1()" が実行されます。
次は、"JavaScript" 内の "AjaxSample1()" を細かく見ていきましょう。
var xmlhttp = false;
try {
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
} catch (e) {
xmlhttp = false;
}
if (!xmlhttp && typeof XMLHttpRequest!='undefined') {
xmlhttp = new XMLHttpRequest();
}
上記で、 "XMLHttpRequest" を使えるようにしています。
いわゆる決まり文句ですので、固定で入れておけばいいんじゃないかな。
"Microsoft.XMLHTTP" はIE用、
"XMLHttpRequest()" はMozilla系ブラウザ用となっていて、
どちらのブラウザでも動作する為にこのような記述となっています。
ここでは、"xmlhttp" っていう変数から "XMLHttpRequest" を操作出来るようにしています。
("xmlhttp" は任意で変更しても良いけど、その場合は全ての "xmlhttp" を変更するように!)
memo
IEのバージョンによっては、"Microsoft.XMLHTTP" 以外にも
"Msxml2.XMLHTTP" や "Msxml2.XMLHTTP.3.0" なども可能だけど、
どのバージョンでも使用出来る(といわれている)"Microsoft.XMLHTTP" がオススメ。
で、"XMLHttpRequest" が使えるようになったら、以下の部分が実行されます。
if (xmlhttp) {
xmlhttp.open('GET', 'ファイル名');
xmlhttp.onreadystatechange = function() {
if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
var disp = document.getElementById('disp');
disp.innerHTML=xmlhttp.responseText;
}
}
xmlhttp.send(null);
}
まず、
if (xmlhttp) {
で、xmlhttp(つまり"XMLHttpRequest")が使える状態になっているかどうかを確認!
未対応ブラウザだとここより以下の処理は実行されません。
次は、
xmlhttp.open('GET', 'ファイル名');
ここのファイル名の部分に読み込みたいHTMLやCGI、
テキストファイル、XMLファイルの名前を記入します。
memo
ここで、"GET" というのは、データの送受信の方式のことで、
"GET" 以外に "POST", "PUT", "PROPFIND" があります。
データを取得する場合は "GET" にしておきましょう。
データ送信の時には "POST" にして使用することもあります。
その次の行の
xmlhttp.onreadystatechange = function() {
では、ファイルの読み込みが開始されたら、
"function() {" 以降が実行されるようになっています。
なので、ここも特に手を加えずにこのままでいいと思います。
そして、
if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
の部分で、読み込み状況をチェックしています。
"readyState" の値は、
0 = uninitialized(読み込みが開始されていない)
1 = loading(読み込み中)
2 = loaded(とりあえず読み込んだ)
3 = interactive(読み込んだデータを解析中)
4 = complete(読み込んだデータの解析完了、または失敗した)
"status" の値は、
200 : ファイルを見つけた
404(または 0) : ファイルが見つかりません("Not Found")
っていう意味。
インターネットしててたまにリンク切れしてて"404 File Not Found" とか表示されるよね?
あれのこと。
読み込みが成功したら、
var disp = document.getElementById('disp');
が、実行されます。
これでHTML中に用意してある
<div id="disp"></div>
を操作出来るようにしています。
そして、そこに
disp.innerHTML=xmlhttp.responseText;
で、読み込んだ文字列を追加しているというわけ。
これで完了。
xmlhttp.send(null);
は、今回は受信だけなので、空送信しておく。
読み込むファイルをHTML形式にしておくと、いいかんじになりますよ。