Home > AJAX > [PEAR]HTML_AJAXの基本

[PEAR]HTML_AJAXの基本

  • Posted by: エガシラリュウジ
  • 2006年10月13日 15:44
  • AJAX

HTML_AJAXとは、PHPよりAJAXな開発を用意にする為のツールキットだ。
HTML_AJAXを利用すると主に以下の内容が可能になる。

1.引き数を指定してPHPのクラスを直接(透過的に)呼び出せる。
2.PHPクラスのメソッドに対応したコールバッククラスを用意する事により、メソッドに対応したコールバック処理が行える。

PHPのクラスを透過的に呼び出す為には、javascript側で、プロキシとなるクラスをインスタンス化する必要がある。
「プロキシ」とは、PHPのクラスを呼び出す為のjavascript側の仲介クラスを指す。

プロキシクラスは、以下のタグを貼り付ける事によりPHP側がjavascriptで自動的に生成するので、手書きする必要がないので便利だ。

<script type="text/javascript" src="server.php?stub=test"></script>

この場合、「server.php」側に「test」クラスを読み込んで置くか、記述しておく必要があり、HTML_AJAXの核となる「HTML_AJAX_Server」のインスタンスに、インスタンス化した「test」クラスを登録しておかなければならない。

server.phpの実際の記述例

require_once 'HTML/AJAX/Server.php';
class test {
	function say_hello($name) {
		return "Hello $name !";
	}
}
$server = new HTML_AJAX_Server();
$server->registerClass(new test());
$server->handleRequest();

実際のプロキシクラスのインスタンス方法は以下ようになる。

var proxy = new test(new callback_test());

このクラスの引き数は、javascript側で定義したコールバック関数となる。

コールバック関数の記述例

ここでは、PHP側の「say_hello」メソッドの処理が完了した後のjavascript側の処理を記述している。
PHP側の実行結果を、id「result」のinnerHTMLに出力しているのがわかる。

function callback_test() {}
callback_test.prototype = {
  	say_hello: function(result) {
  		document.getElementById('result').innerHTML = result;
  	}
}

そして、html側では、HTML_AJAXが提供するjavascript関数を利用可能にする為に、以下の内容を記述しておく必要がある。

<script type="text/javascript" src="server.php?client=all"></script>

あとは、HTMLにアクションを記述し、完了となる。

バラバラに説明しているので、わかりにくいが、以下の記述例を見ると処理の流れが想像できる。

HTMLの記述例

<title>HTML_AJAX テスト</title>
<script type="text/javascript" src="server.php?client=all"></script>
<script type="text/javascript" src="server.php?stub=test"></script>
<script type="text/javascript"></script>
function callback_test() {}
callback_test.prototype = {
  	say_hello: function(result) {
  		document.getElementById('result').innerHTML = result;
  	}
}
var proxy = new test(new callback_test());
<a href="javascript:proxy.say_hello('TEST');">Run</a><br />
<span id="result"></span>

HTML読み込み時に、コールバック関数付でtestクラス(PHP側のtestクラスへの仲介クラス)をインスタンス化し、proxyに代入している。

HTML側の「Run」をクリックすると、「TEST」という文字列の引き数付で、PHP側のsay_helloメソッドが透過的に呼び出される。

呼び出された、PHP側は、引き数「TEST」に、「Hello」という文字列をひっつけて返す。

PHP側の処理が完了すると、プロキシクラスのインスタンス化時に引き渡したコールバックメソッドが実行され、処理が完了となる。

また、HTML_AJAXはプロキシを使わない手法もとれるようになっているようだ。
その場合、javascript上で、以下のメソッドを呼びだす。

HTML_AJAX.replace('target', 'output.php');

その他の記述例

「output.php」を非同期で実行し、実行結果をHTML内の「target」要素のinnerHTMLに代入する。

HTML_AJAX.append('target', 'output.php');

「output.php」を非同期で実行し、実行結果をメッセージボックスで表示する。

HTML_AJAX.grab('output.php', function(result){ alert(result); });

「server.php」上の「month」クラスの「lastmonth」メソッドを実行し、実行結果をメッセージボックスで表示する。

HTML_AJAX.defaultServerUrl = 'server.php';
HTML_AJAX.call('month', 'lastmonth', function(result){ alert(result); });

Comments:0

コメントフォーム

コメントを表示する前にこのブログのオーナーの承認が必要になることがあります。

Trackbacks:0

TrackBack URL for this entry
http://blog.non-style.com/mt/mt-tb.cgi/12
Listed below are links to weblogs that reference
[PEAR]HTML_AJAXの基本 from Webプログラマの苦悩

Home > AJAX > [PEAR]HTML_AJAXの基本

Links
Search
Feeds
Tag Cloud

Return to page top