jQpie – javascriptからphpの関数(function)を呼び出すjQueryを使用したライブラリ
今回、JQueryを用いたjavascriptからphpの関数を呼び出すライブラリ jQpie を試してみたので書いてみます。
比較的用途が限られていますが、表側で見せたくないようなものをphp側で処理してjavascriptへ出力するなどに向いていると思います。
以下の順に記述していきます。
- ダウンロードと導入
- 使用方法
a. JSON形式で値を受け取る
b. html形式で値を受け取る
c. jQuery APIを用いエフェクト付きで値を受け取る
なお PHP5以上で動作 するため、使用する前にPHPのバージョンに注意が必要です。
※PHP4では jQpie.php 及び jQpie_response.php において static変数 の記述方法が異なるためシンタクス・エラーを返します。
以下のリンクの Downloading jQPie よりダウンロードを行います。
http://projects.cyberlot.net/trac/jqpie/wiki
ダウンロードファイルには jQuery が含まれている為、既に使用している場合は以下のファイルのみの使用で対応が可能です。
- js/jqpie.js
※jQueryのエフェクトを使用しないで値を返す場合のみ 下段 2の使用方法の c を参照 - php/jQPie.php
- php/jQPie_Response.php
※jQueryのエフェクトを使用しないで値を返す場合のみ 下段 2の使用方法の c を参照
exampleディレクトリ内にテストファイル(test.html)が用意されているので、これをベースに必要な部分のみ書いていきます。
今回テストファイルでは以下の3つが試されています。
a. JSON形式でphpから値を受け取る
b. html形式でphpから値を受け取る
c. jQuery APIを用いエフェクト付きでphpから値を受け取る
※a,bのような書式で、handler に xmlを指定することでxml形式で値を受けることが可能なようです。
$.getJSON(
'handler.php',
{ handler: 'json', callback: 'getarray' },
function( json ) { alert( json.a ) }
);
handlerで形式’json’を指定し、callbackでphp側の関数名 getarray を指定しています。
返り値に対してalertで配列値「a」の値を出力しています。
require_once('../php/jQPie.php');
function getarray() {
return array('a' => 1, 'b' => 2);
}
if((isset($_POST) AND sizeof($_POST)) OR (isset($_GET) AND sizeof($_GET))) {
$handler = new JqPie();
$handler->registerCallback('getarray');
$handler->processIncoming();
exit();
}
9行目のように予め使用する関数名を指定します。
$('#test2').load(
'handler.php',
{
handler: 'html',
callback: 'simplehtml',
params: ' This was added by passing it through params'
}
);
handlerで形式’html’を指定し、callbackでphp側の関数名 simplehtml を指定します。
html側のタグidがtest2の部分に値を出力します。
require_once('../php/jQPie.php');
function simplehtml($params) {
return '<B>Injected HTML'.$params.'</B>';
}
if((isset($_POST) AND sizeof($_POST)) OR (isset($_GET) AND sizeof($_GET))) {
$handler = new JqPie();
$handler->registerCallback('simplehtml');
$handler->processIncoming();
exit();
}
9行目のように予め使用する関数名を指定します。
jQueryのエクステンションを用いるため、予め html 上などで js/jqpie.js を読み込んでおく必要があります。
$('#test3').jqpie(
'handler.php',
{ callback: 'jqueryeffects' }
);
js/jqpie.js に入っている jqpie関数 を使用します。callbackでphp側の関数名 jqueryeffects を指定しています。
require_once('../php/jQPie.php');
require_once('../php/jQPie_Response.php');
function jqueryeffects() {
$responseObject = JqPie_Response::getInstance();
$attribs = array();
$attribs['class'] = 'large';
$responseObject->attr($attribs);
$responseObject->show();
$responseObject->addClass('green');
$responseObject->Script('alert("Hello")');
}
if((isset($_POST) AND sizeof($_POST)) OR (isset($_GET) AND sizeof($_GET))) {
$handler = new JqPie();
$handler->registerCallback('jqueryeffects');
$handler->processIncoming();
exit();
}
php側で php/jQPie_Response.php を参照する必要があります。
16行目のように予め使用する関数名を指定します。
5行目で関数を読み込み、それ以降はソースのような形で任意のjQuery APIを参照することで対応が可能です。
jQuery APIについては以下のページが非常に参考になります。
http://semooh.jp/jquery/

