Entries

スポンサーサイト

カテゴリ:スポンサー広告
更新日:--------
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

[Delphi for PHP] Ajaxをしてみる

カテゴリ:RadPHP(Delphi for PHP)
タグ: Ajax 
更新日:2009-07-31
Webアプリケーションでシステム開発をすることのメリットはいろいろあるのだけれど、そのひとつに設計が容易・・・というかページ遷移を設計すれば実装が容易、というのがあると思う。ようするに、ページ遷移図があれば、システムの機能は、ほぼすべて説明できる、ということ。

ページ遷移そのものがユーザーインターフェースといえるし、どのページに何のデータを表示し、どのデータを入力するのかは明確になるし、処理はページ遷移によってしか発生しない。この結果、入力-処理-出力という教科書的な流れがちゃんと押さえられる。さらに、ページ遷移図は、ユーザーにも理解しやすい(と思われているので)、顧客なんかへの説明が楽。と、設計的には、いいこと尽くめだ。

・・・まぁ、「旧来の」という枕詞をつけないといけないかな。Ajaxというのが広まってしまった今となっては。だけど、これがやっかいなのよね。それは、まさにAjaxのA(Asynchronous)、非同期性というのが設計を、そして実装を数段複雑にしてしまうからである。

そりゃまぁ、ユーザーとしては、Ajaxの利点は理解している。Google Mapのスクロールする地図は、従来のページ切り替えによる表示に比べ、数段も使いやすい。Gmailだって、便利に使ってる。でも、少なくとも、システム開発者としての私は、Ajaxというのは嫌い・・・というか、避けたい、かな。

それでも、Ajax化したアプリを使ってみると、ページ遷移というのが、かなりのストレスになっていたのがわかる。ページ遷移がはっきりしていることによる設計の容易さというのは、かなりの代償を払っているということになる。だから、それなりに環境が整えばAjaxにしたいな、とは思っていた。

というわけで、Delphi for PHPではAjax化が容易のようだったので、試しに作っていたアプリケーションで少し試してみた。

サンプルを見れば容易さはわかる。ボタンのイベント(PHPの処理)を書いて、JavascriptイベントでajaxCallというメソッドを使うだけ。つまり、既存のアプリケーションに対して、Javascriptイベントを追加するだけでAjax化(まぁ、少なくとも、ページ遷移が発生しない更新)ができる、というわけだ。

この利点は大きい。少なくとも私にとっては。件のページ遷移による設計のままでAjax化ができることを意味するからだ。

[解決] ajaxCallでPageControlやGroupBoxが二重になってしまう。

さて、試しているうちに、ひとつ問題があった。それは、Ajax化したイベントを実行すると、PageControlやGroupBoxなどのコンポーネントが二重になって表示されてしまうことだった。

検索しても、なかなか解決方法が見つからず、かといって自分で原因追求するだけの時間も、能力もなく。Ajax化をあきらめようかとも思ったりしたけど、あきらめきれず・・・ふと、ajaxCallのヘルプを見た。オプションの三番目の引数でコンポーネント名を指定すれば、指定したコンポーネントだけ更新する・・・らしい。
function Button1JSClick($sender, $params)
{
$comps = array('Panel1', 'Panel2');
echo $this->Button1->ajaxCall('Button1Click', $params, $comps);
?>
//Add your javascript code here
return false;
<?php
}

これで、Button1をクリックするとPanel1とPanel2だけが更新される。一応、PageControlなどのコンポーネントが複数になってしまうことはなくなった。

Delphi for PHP関連の過去記事

>D4PHP、いろいろ・・・(2) - 自分なりのテクニック (2009-07-11)
>D4PHP、いろいろ・・・ (2009-06-30)
>「Delphi for PHP」を買いました(2009-03-19)





スポンサーサイト

Appendix

プロフィール

いむら@fintopo いむら@fintopo

フリーのシステムエンジニア兼プログラマです。趣味はガーデニングとカメラ。2017年4月にα7IIを買いました。フルサイズ一眼初心者です。

このページのQRコード

季節暦

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。