« ブログ開始 | メイン | さらば Paged List »

2005年09月08日

CBL Partial Updater

 サイボウズ・ラボに入社して、そろそろ1ヶ月になります。その間、こちらのブログは閑古鳥が鳴いていたわけなのですが、そろそろ仕込んできた小ネタを公開していこうと思います。

 というわけで、第1弾は AJAX を楽に書く話。

 もともと PDA 用のウェブブラウザ屋さんだったりする関係で AJAX は敵だったのですが、ラボに入社以来、いろいろ実例を見せてもらっています。その中で、自分でも AJAX アプリを書いてみようと思ったのですが、めんどくさそうなのでラッパーを作りました。

 このラッパー「CBL Partial Updater」を使えば、既存の PHP コードをそのまま AJAX 化することができます。
 まず、例として、テストページ (PHP ソースコード, HTML テンプレート) をご覧ください。

 通常の PHP コードと違うのは、以下の点です。

require_once('partialupdater.class.php');

(略)

if (isset($_REQUEST['_'])) {
    $updater = new CBL_PartialUpdater(array('encoding' => 'euc-jp'));
    $updater->send($smarty->fetch('index.tpl'),array('count','table','error'));
} else {
    $smarty->display('index.tpl');
}

 これで、クライアントからのリクエストが AJAX だった場合は、CBL_PartialUpdater ライブラリが出力結果の HTML を解析し、指定された id 要素の部分だけを転送、差替してくれます (この例では、 count, table, error 要素が差し替わります) 。

 あとは、HTML の中で、<span id="...">...</span> などと宣言して、差し替える部分を宣言し、フォームの onSubmit ハンドラを書けば終わりです。

 これで、お気楽に AJAX することができて、私はハッピーになりました。

 最後になりましたが、このライブラリは、 SourceForge.net を公開することになりました。こちらよりダウンロードできますので、ご意見、ご感想などいただければと思います。

2005/09/22 追記: 最新情報については CBL Partial Updater カテゴリ をご覧ください。

投稿者 kazuho : 2005年09月08日 13:38 このエントリーを含むはてなブックマーク このエントリーを含むはてなブックマーク

トラックバック

このエントリーのトラックバックURL:
http://labs.cybozu.co.jp/cgi-bin/mt-admin/mt-tbp.cgi/102

このリストは、次のエントリーを参照しています: CBL Partial Updater:

» CBL Partial Updater from プログラマーって呼ばないで!
ひさびさにサイボウズ様のお話。ラボのお話でしょうか。 サイボウズ・ラボ の成果第一弾、Partial Updater Partial Updater... [続きを読む]

トラックバック時刻: 2005年09月15日 02:22

コメント

理解不足か、Smartyを使わずに実現しようとしたのだが、できなかったなぁ。CBL_PartialUpdater::ob_end('count'); がよくわからないです。

投稿者 & : 2005年09月16日 09:44

http://kazlab.ath.cx/~kazuho/cbl-updater/pure.php に、 Smarty を使用していないコードを置きました。よろしければごらんください。

投稿者 kazuho : 2005年09月16日 11:59

That's really a great script, thankyou. But i have some problem in using it. Please help me to make it work!! my script is as below..

..


Message Board

Live Search: '>


User:'>
Title:
Description:


entries

..

投稿者 melvin : 2006年01月14日 17:05

Hi,
Your HTML seems to be misecsaped. Please repost your comment.

投稿者 kazuho : 2006年01月16日 12:45

ok, rather than post the script, i am facing the problem is that:
1. the script work in some server but some other server will gen. a error "オブジェクトデサポートされていないポロパティまたはメソッドです", then the spinner would display when search or adding data but the table content would not update, i have to refresh the screen to make it work ?!
2. testing in no problem : after adding tooltip's function, it can only display at the beginning, tooltip doesn't work after searching or adding...
3. how can i use this script to make "TAB" menu work ?!

Thanks

投稿者 melvin : 2006年01月17日 21:08