Hello Dojo! - XHRの発行

Dojoではdojo.xhr()をはじめとしたメソッドを使用してXHR(XMLHttpRequest)を発行する。

HTMLファイル - xhr.html

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html lang="ja">

<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta http-equiv="Content-Style-Type" content="text/css">
<meta http-equiv="Content-Script-Type" content="text/javascript">
<title>Dojo XHR sample</title>
<script type="text/javascript" src="./js/dojo1.2/dojo/dojo.js"></script>
<script type="text/javascript">
<!--
dojo.addOnLoad
(
    function()
    {
        dojo.query('#content_submit').connect('onclick',
            function()
            {
                dojo.xhrGet
                (
                    {
                        url: './xhr.php',
                        content:
                        {
                            'query' : dojo.byId('content').value
                        },
                        load: function(data)
                        {
                            dojo.byId('result').innerHTML += data; 
                        },
                        error: function(error)
                        {
                            alert(error);
                        }
                    }
                );
            }
        );

    }
);
-->
</script>

</head>

<body>
    <p>
        <input type="text" id="content" value="">
        <input type="button" id="content_submit" value="submit">
    </p>

    <table border="1" width="400">
        <thead>
            <tr>
                <th>TimeStamp</th>
                <th>Contents</th>
            </tr>
        </thead>
        <tbody id="result">

        </tbody>
    </table>
</body>

</html>

PHPファイル - xhr.php

<tr>
    <td align="center"><?php echo date('Y/m/d H:i:s') ?></td>
    <td align="center"><?php echo htmlspecialchars(trim($_GET['query']),     ENT_QUOTES, 'UTF-8'); ?></td>
</tr>

ボタンをクリックすると入力した文字列をxhr.phpに送信し、結果をテーブルの中に追加する

今回使用したdojo.xhrGetは、以下のようなものである(Dojo API Documentaionより引用)。GETリクエストを行う場合に便利なメソッドだ。

dojo.xhrGet(args: dojo.__XhrArgs);

ここで指定しているオプションとその中身は次のとおり。

  • url: リクエスト先
  • content: サーバに送信するパラメータ
  • load: HTTPレスポンスが成功を返した場合に呼ばれる関数を指定する
  • error: リクエストに失敗した場合やサーバエラーの場合に呼ばれる関数を指定する

dojo.xhr()のほかにも今回使用したdojo.xhrGet()のようにいくつかのショートカットが用意されている。また、ここでは最低限のオプションしか指定していないが、ほかにもいくつかのオプションが用意されているので、興味のある方はDojo API Documentaionを参照されたい。

以上、JavaScriptフレームワークのもっとも基本的な機能として、イベントハンドラの登録方法とXHRの発行方法を紹介した。記述方法こそ違うものの、ここまではjQueryやPrototype.jsといったほかのJavaScriptフレームワークでも可能なことだ。

次ページからはDojoが用意する強力なウィジェットと、その使い方を紹介していこう。