jQpie – javascriptからphpの関数(function)を呼び出すjQueryを使用したライブラリ

  • hatena bookmark
  • Twitter
  • Delicious
  • Blogger Post
  • Evernote
  • Google Bookmarks
  • Share/Bookmark

今回、JQueryを用いたjavascriptからphpの関数を呼び出すライブラリ jQpie を試してみたので書いてみます。

比較的用途が限られていますが、表側で見せたくないようなものをphp側で処理してjavascriptへ出力するなどに向いていると思います。

以下の順に記述していきます。

  1. ダウンロードと導入
  2. 使用方法
    a. JSON形式で値を受け取る
    b. html形式で値を受け取る
    c. jQuery APIを用いエフェクト付きで値を受け取る

なお PHP5以上で動作 するため、使用する前にPHPのバージョンに注意が必要です。
※PHP4では jQpie.php 及び jQpie_response.php において static変数 の記述方法が異なるためシンタクス・エラーを返します。


1. ダウンロードと導入

以下のリンクの 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 を参照
2. 使用方法

exampleディレクトリ内にテストファイル(test.html)が用意されているので、これをベースに必要な部分のみ書いていきます。

今回テストファイルでは以下の3つが試されています。

a. JSON形式でphpから値を受け取る
b. html形式でphpから値を受け取る
c. jQuery APIを用いエフェクト付きでphpから値を受け取る

※a,bのような書式で、handler に xmlを指定することでxml形式で値を受けることが可能なようです。

a. JSON形式でphpから値を受け取る
javascript
$.getJSON(
	'handler.php',
	{ handler: 'json', callback: 'getarray' },
	function( json ) { alert( json.a ) }
);

handlerで形式’json’を指定し、callbackでphp側の関数名 getarray を指定しています。
返り値に対してalertで配列値「a」の値を出力しています。

php
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行目のように予め使用する関数名を指定します。

b. html形式でphpから値を受け取る
javascript
$('#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の部分に値を出力します。

php
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行目のように予め使用する関数名を指定します。

c. jQuery APIを用いエフェクト付きでphpから値を受け取る

jQueryのエクステンションを用いるため、予め html 上などで js/jqpie.js を読み込んでおく必要があります。

javascript
$('#test3').jqpie(
	'handler.php',
	{ callback: 'jqueryeffects' }
);

js/jqpie.js に入っている jqpie関数 を使用します。callbackでphp側の関数名 jqueryeffects を指定しています。

php
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/

  • hatena bookmark
  • Twitter
  • Delicious
  • Blogger Post
  • Evernote
  • Google Bookmarks
  • Share/Bookmark
関連する記事:
  1. FlashでPerlを介した別ドメインのデータ取得方法(mimeType判別付き) +PHP版
  2. Flashで作ったウィジェットを出力する方法(Perl/PHP出力付き)
  3. Flashで別ドメイン(クロスドメイン)にある画像の表示方法(AS3.0)
  4. Petit tools – 住所や場所名から経緯度(ジオコード)を出力するウィジェット
コメント 停止中