JPSpanで配列の受け渡しと取得 |
2006/03/30 |
JPSpanでajaxを使おうへ戻る
JPSpanでは、配列をサーバに受け渡したり、配列をPHPからJavaScriptへ受け渡すことができるようです。
このサンプルはここに設置しました。
サーバ側 server.php
<?php
/**
* @file
* @brief JPSpanのサンプル (サーバ側)
*/
// JPSpanの読み込み
require_once 'JPSpan/JPSpan.php';
require_once JPSPAN . 'Server/PostOffice.php';
// PostOfficeサーバのインスタンス生成
$S = & new JPSpan_Server_PostOffice();
///////////////////////////////////////////////////////
// ここから上は、毎回変わらない
///////////////////////////////////////////////////////
// 今回、利用するクラスの定義
class HelloWorld {
// JavaScriptから受け取った配列をprint_rする
function print_r($obj) {
$ret[0] = print_r($obj, true);
if (is_array($obj) && count($obj >= 3)) {
$tmp = $obj[0];
$obj[0] = $obj[2];
$obj[2] = $tmp;
}
$ret[1] = print_r($obj, true);
return $ret;
}
}
// クラスをJPSpanハンドラに登録
// これでHelloWorldクラスのprint_r()メソッドが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'>
// コールバック関数の配列を生成
var MyCallBack = {
print_r: function(result) { idDisp.innerHTML = result[0] + "<br/>" + result[1]; }
}
// PHP側クラスの生成
var php_class = new helloworld(MyCallBack);
// テスト用データの生成
var ary = new Array();
ary[0] = "tokyo";
ary[1] = "nagoya";
ary[2] = "osaka";
</script>
</head>
<body>
<p>
<input type=button value="array" onclick="php_class.print_r(ary)">
</p>
<div id=idDisp></div>
</body>
</html>
この例では、配列をPHPへ渡して結果を配列でJavaScriptに返しており、配列の各要素をコールバック関数で表示しています。
|