JPSpanでHelloWorld(2つ以上のメソッドがある場合) |
2006/03/30 |
JPSpanでajaxを使おうへ戻る
単純なHelloWorldではわかりにくい部分があるので、少しだけ複雑にして2つ以上のメソッドがあるクラスをJavaScriptから利用する場合のサンプルです。
このサンプルはここに設置しました。
サーバ側 server.php
PHPスクリプトです。今回はHelloWorldクラスに3つのメソッドを定義しています。
<?php
/**
* @file
* @brief JPSpanのHelloWorldサンプル (サーバ側)
*/
// JPSpanの読み込み
require_once 'JPSpan/JPSpan.php';
require_once JPSPAN . 'Server/PostOffice.php';
// PostOfficeサーバのインスタンス生成
$S = & new JPSpan_Server_PostOffice();
///////////////////////////////////////////////////////
// ここから上は、毎回変わらない
///////////////////////////////////////////////////////
// 今回、利用するクラスの定義
class HelloWorld {
// 時刻を返すメソッド
function GetTime($msg) {
return $msg . " " . date('H:i:s');
}
// 日付を返すメソッド
function GetDate($msg) {
return $msg . " " . date('Y/m/d');
}
// 日付と時刻を返すメソッド
function GetDateTime($msg) {
return $msg . " " . date('Y/m/d') . " " . date('H:i:s');
}
}
// クラスをJPSpanハンドラに登録
// これでHelloWorldクラスの各メソッドがJavaScriptから利用可能となる
$S->addHandler(new HelloWorld());
///////////////////////////////////////////////////////
// ここから下は、毎回変わらない
///////////////////////////////////////////////////////
if (isset($_SERVER['QUERY_STRING']) && strcasecmp($_SERVER['QUERY_STRING'], 'client')==0) {
// JavaScriptコードの表示
$S->displayClient();
} else {
// エラーハンドラの呼び出し
require_once JPSPAN . 'ErrorHandler.php';
// サーバ動作開始
$S->serve();
}
?>
クライアント側 index.html
<html>
<head>
<!-- JPSpanのクライアントコードを取得 -->
<script type='text/javascript' src='server.php?client'></script>
<script type='text/javascript'>
// コールバック関数を定義
// ここでは、MyCallBackに直接書かないパターンも表したため、
// ここに1つだけ書いてみました。
function hn_getdatetime(result) {
idDisp.innerHTML = result;
}
// コールバック関数の配列を生成
var MyCallBack = {
gettime: function(result) { idDisp.innerHTML = result; },
getdatetime: hn_getdatetime,
getdate: function(result) { idDisp.innerHTML = result; }
}
// PHP側クラスの生成
var php_class = new helloworld(MyCallBack);
</script>
</head>
<body>
<p><input type="text" name="iTxt" id="iTxt" value="Hello"></p>
<p>
<input type=button value="GetDate" onclick="php_class.getdate(document.getElementById('iTxt').value)">
<input type=button value="GetTime" onclick="php_class.gettime(document.getElementById('iTxt').value)">
<input type=button value="GetDateTime" onclick="php_class.getdatetime(document.getElementById('iTxt').value)">
</p>
<div id=idDisp></div>
</body>
</html>
|