ファイルの取得の手順

広告

まずは簡単なファイルを読み込みGDownloadUrl関数の使い方を確認します。GDownloadUrl関数は次のように定義されています。

指定された URL のリソースを取得し、ドキュメントのテキストを最初の引数と
し、HTTP 応答ステータス コードを 2 つ目の引数として onload 関数を呼び出
します。リクエストがタイムアウトになると、最初の引数としての null と 2 
つ目の引数としての -1 の代わりにロード関数が呼び出されることがあります。
この関数はデフォルトで HTTP GET リクエストを送信します。代わりに HTTP 
POST リクエストを送信するには、オプションの postBody 引数内でデータを渡
します。送信されるデータが「application/x-www-form-urlencoded」のタイプ
でない場合、コンテンツ タイプをpostContentType 引数内の文字列として渡し
ます。このメソッドは、サイト間にまたがるスクリプトの制限を受けます。この
メソッドは、基礎となるブラウザの XmlHttpRequest 実装を使用するのでご注意
ください。

1番目の引数にダウンロードするファイルのURL、2番目の引数に完了時に呼び出されるコールバック関数を指定します。

通信先の制限としてスクリプトと読み込むデータは同じホストにある必要があります。その為、1番目の引数には対象のファイルを表すURLを相対パスで指定して下さい。

コールバック関数には2つの引数が渡されてきます。1つ目はダウンロードしたファイルのデータを文字列として渡します。2つ目は通信結果を表すステータスコードです。

実際には次のように記述します。

var map = new GMap2(document.getElementById("map"));
map.setCenter(new GLatLng(35.172304,136.908306), 15);

GDownloadUrl("sample.txt", dispData);

function dispData(data, statusCode){
  if (statusCode == 200){
    alert(data);
  }
}

ステータスコードは通信が正常に終了した場合に200が返され、それ以外の値であれば何らかのエラーです。

200  OK
401  Unauthorized
403  Forbidden
404  Not Found
500  Internal Server Error

タイムアウトした場合は-1が設定されるようです。

サンプルプログラム

では試してみます。

code1_1.js

function initialize() {
  if (GBrowserIsCompatible()) {
    var map = new GMap2(document.getElementById("map_canvas"));
    map.setCenter(new GLatLng(35.758297,139.878488), 15);

    GEvent.addListener(map, "click", clickAction);
  }
}

function downloadData(){
  GDownloadUrl("strdata.txt", function dispData(data, statusCode){
    alert(data);
  });
}

map1_1.html

<!DOCTYPE html "-//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>
    <meta http-equiv="content-type" content="text/html; charset=UTF-8"/>
    <title>サンプル:ファイルの取得の手順</title>
    <script src="http://maps.google.com/maps?file=api&v=2&key=(key)&sensor=false"
            type="text/javascript" charset="utf-8"></script>
    <script src="./js/code1_1.js" type="text/javascript"></script>
  </head>
  <body onload="initialize()" onunload="GUnload()">
    <div id="map_canvas" style="width: 400px; height: 400px"></div>

    <form>
    <p>
    <input type="button" id="btn" value="ダウンロード" onclick="downloadData()" />
    </p>
    </form>

  </body>
</html>

ではブラウザで上記のURLを見てみます。

p1-1

今回地図はあまり関係ありません。地図下の「ダウンロード」ボタンを押すと、サーバからファイルを取得し、ファイルに書かれていたデータをアラートとして表示します。

p1-2

( Written by Tatsuo Ikura )

関連記事 (一部広告含む)