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>
Copyright©2001-2008 釣ったよ! All Right Reserved.    sg@tsuttayo.sytes.net