GXmlHttpでテキストファイルを取得する

ここでは、Google MAPS APIでAJAXを行うための基礎的な要素であるGXmlHttpの説明を行います。

サンプル

以下のサンプルはGoogle MAPS APIを使ったページのソースです。


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
  <head>
    <title>Google Maps JavaScript API Example - simple</title>
    <script src="http://maps.google.com/maps?file=api&v=1&key=aaaaa"
        type="text/javascript" charset="utf-8"></script>
    <script type="text/javascript">
    //<![CDATA[

    function onLoad() {
      var map = new GMap(document.getElementById("map"));
      map.addControl(new GSmallMapControl());
      map.addControl(new GMapTypeControl());
      map.centerAndZoom(new GPoint(139.15, 36.033333), 4);
      
      var request = GXmlHttp.create();
      request.open("GET", "gxmlhttp-0.txt", true);
      request.onreadystatechange = function() {
        if (request.readyState == 4) {
          document.getElementById("result").innerHTML =
              request.responseText;
        }
      }
      request.send(null);

    }

    //]]>
    </script>
  </head>

  <body onload="onLoad()">
    <div id="map" style="width: 500px; height: 450px"></div>

    <P>x</P><DIV id="result"></DIV>

  </body>

</html>

GXmlHttpを使うとHTTPによるコネクションを確立してデータを取得できます。 HTTPのリクエストはrequest.open() [ var request = GXmlHttp.create()です。] を使って設定します。 このサンプルでは、request.open()の一つ目の引数は"GET"にしています。 このGETという文字列はHTTPプロトコルのリクエストラインの一つ目の項目です。 (HTTPプロトコルと聞いて良く解らないという場合は何も考えず"GET"と書いてください。) GETは全部大文字で書かなければなりません。 SOAPなどを使う場合にはここにPOSTと書きますが、とりあえずここではGETと書いてください。

このサンプルでは、GXmlHttpを利用してgxmlhttp-0.txtというテキストファイルを取得しています。 このテキストファイルには、以下のような文字列が入っています。

GXmlHttpではステートが変わる毎に呼び出されるコールバックをonreadystatechangeに登録する方式ですが、このサンプルではその場でfunctionを作ってしまっています。 どうもrequest.readyStateが4になるとHTTPの転送が終わった事になっているようです。 実際にHTTPでの通信が開始されるのはrequest.send(nulL)のところです。 このサンプルでは、取得した文字列を「DIV id="result"」のところに表示しています。


This text is loaded from "gxmlhttp-0.txt".

id="reslut"のDIVタグ内部に取得したテキストファイルに書いてある情報が表示されます。

表示例

表示例です。 下の方の文字列はAJAXを使って取得しています。


IPv6基礎検定

YouTubeチャンネルやってます!