#freeze #setlinebreak(on) * HTML_Ajax PHP用Ajaxフレームワーク [#v46d80a2] [[HTML_AJAXでGET,POSTリクエスト>PEAR/HTML_AJAX/GET_POST]] [[日本語POST対応unescape>PEAR/HTML_AJAX/unescape]] [[EthnaとPEAR :: HTML_Ajaxを組み合わせる>Framework/Ethna/HTML_AJAX]] [[escapeとencodeURIComponent>PEAR/HTML_AJAX/encodeURIComponent]] #htmlinsert(googleAdsense.html) #ref(http://dozo.rgr.jp/img/img20_file.png,right,nolink,around,PHP::PEAR) 現状のシステムを置き換えるのも意外と簡単かも。 (ノ・・)ン。。。。。。(((●コロコロッ * 概要 [#pea3f80d] Ajaxとは 読み方 : エイジャックス フルスペル : Asynchronous JavaScript + XML Webブラウザに実装されているJavaScriptのHTTP通信機能を使って、 Webページのリロードを伴わずにサーバと XML形式のデータのやり取りを行なって処理を進めていく対話型Webアプリケーションの実装形態。 従来、Webブラウザを使ったWebアプリケーションでは、 データをサーバに通知して処理結果を得るにはページ全体をロードしなおさなければならず、 ネイティブアプリケーションのような操作性を得ることは難しかった。 Ajaxでは、指定したURLからXMLドキュメントを読み込む機能を使い、 ユーザの操作や画面描画などと並行してサーバと非同期に通信を行なうことで、 サーバの存在を感じさせないシームレスなWebアプリケーションを実現することができる。 ちなみに、JavaScriptのHTTP通信機能自体は同期通信にも非同期通信にも対応しており、 受信するデータ形式もXMLとプレーンテキストの両方を選べるため、 プレーンテキストを同期通信する従来型のWebアプリケーションをページ遷移を伴わずに実現するといった使い方もできる。 そのAjaxをPHPで実装するためのフレームワークが[[HTML_AJAX>http://pear.php.net/package/HTML_AJAX/]]だ。 ([[SAJAX>http://www.modernmethod.com/sajax/]]というのもあるが、がらくた同然。) まだ詳しいところはわかっていないので、 一番とっかかりの部分だけ。 ** インストール [#a7130b96] pear install -f html_ajax ** 簡単なサンプル [#w4a8150d] 実装するにはJavaScriptを記述したHTML(ajax.html)ファイルと、 リクエスト受信用のPHP(server.php)ファイル。 実スクリプトのPHP(output.php)ファイル。 の三つを用意する。 ajax.html <html> <body> <script type="text/javascript" src="server.php?client=all"></script> <div id="target">I'm the target</div> <script type="text/javascript"> HTML_AJAX.replace('target','output.php'); </script> <span id="list">I'm the target</span> <script type="text/javascript"> HTML_AJAX.replace('list','output.php?req1=list&req2=list'); </script> </body> </html> server.php <?php include 'HTML/AJAX/Server.php'; $server = new HTML_AJAX_Server(); $server->handleRequest(); ?> output.php <? echo print_r( $_GET ); echo "hogehoge"; ?> 出力結果 <html> <BODY> <DIV id="HTML_AJAX_LOADING" style="padding: 4px; position: absolute; top: 0pt; right: 0pt; background-color: red; width: 80px; display: block;"> Loading... </DIV> <SCRIPT src="server.php?client=all" type="text/javascript"/> <DIV id="target"> Array ( ) 1hogehoge </DIV> <SCRIPT type="text/javascript"> HTML_AJAX.replace('target','output.php'); </SCRIPT> <SPAN id="list"> Array ( [page] => list [mod] => list ) 1hogehoge </SPAN> <SCRIPT type="text/javascript"> HTML_AJAX.replace('list','output.php?page=list&mod=list'); </SCRIPT> </BODY> </html> ポイントは3つ 出力結果はinnerHTMLであること。 GETリクエストが使えること。 リクエスト回数は何回でも可 現状のシステムの一部分に適当なIDをつけて、 実際のリクエストをJavaScript経由で行えば、 簡単に実装できそうだ。 比較的規模の大きめなパッケージなので、 もっといろいろなことが出来そうだ。 もう少し調べてみます。 ハマリどころ 出力側(今回の例ではoutput.php)の出力文字列をUTF-8にしておかないと、 文字化けが発生する。 どうもArrayクラスのプロトタイプを設定しているみたいで、 Arrayクラスを使ったJavaScriptコードを書いていると、 配列におかしなデータが混入していることがある。 [______array] っていうデータがあった場合はご注意を。 使用時に[Loading...]と必ず表示がされる。 消したい場合はID[HTML_AJAX_LOADING]のタグをページのどこかに用意する。 出来ればspanタグがよい。 そのstyleにdisplay:none属性を付けておく。 <span style="display:none;" id="HTML_AJAX_LOADING"></span>