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に返しており、配列の各要素をコールバック関数で表示しています。

Copyright©2001-2008 釣ったよ! All Right Reserved.    sg@tsuttayo.sytes.net