: O. Yuanying

はじめてのXMLHttpRequestをしてみよう。

とりあえずXMLHttpRequestオブジェクトを作ってデータを読み込むところまでメモ。

まず、「Cross-Browser XMLHttpRequest」に行き「xmlhttprequest.js」をダウンロードしてくる。

これはXMLHttpRequestを使う上で各種ブラウザ(2005-02-28現在、IE、Firefox、Opera)に対応したXMLHttpRequestオブジェクトを生成するためのライブラリっぽい。(Creative Commons License.

上のページに書いてあるソースそのままなんですが、 まずxmlhttprequest.jsをインクルードしてやる。

<script type="text/javascript" src="xmlhttprequest.js"></script>

GETリクエスト。

var req = new XMLHttpRequest();
if (req) {
  // onreadystatechangeという関数を定義。(上書き?)
  // リクエストの状態をキャッチするハンドラ関数。
  req.onreadystatechange = function() {
    if (req.readyState == 4 && req.status == 200) {
      // ここに取ってきたデータで行いたい処理を記述する。
      alert(req.responseText);
    }
  };
  req.open('GET', 'pageurl.xml');
  req.send(null);
}

POSTリクエスト。

var req = new XMLHttpRequest();
if (req) {
  req.onreadystatechange = function() {
    if (req.readyState == 4 && req.status == 200) {
      // ここに取ってきたデータで行いたい処理を記述する。
      alert(req.responseText);
    }
  };
  req.open('POST', 'scripturl.cgi');
  req.send('var1=data1&var2=data2');
}

これで変数「req」の中には該当URLのテキストデータ(XMLデータ)が入っているので、これを表示してやればよい。

テキストデータとして扱う場合。

var textdata = req.responseText

XMLデータとして扱う場合。

var xmldata = req.responseXML

テキストデータとして扱った場合にはそのままデータを表示してやることができる。

alert(textdata);

XMLデータとして扱った場合にはDOMを使ってデータを取得することができる。

alert(xmldata.getElementsByTagName('test')[0]);

DOMを使用したXMLデータの調理例は「JavaScriptでDOMを使う――オブジェクト指向入門の入門」がよさそう。

注意点 -- XMLHttpRequestでリクエストが行えるのは実行しているJavaScriptがあるホストと同じホスト上のデータのみである。(要するにhttp://www.example.com/上のページからはhttp://www.example.com/にしかリクエストをおこなうことができない。最初これを使って他のサイトのRSSデータを取得して検索するとか考えてたんだけど無理そうです。)