Top / PEAR / HTML_AJAX


 #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] =&gt; list
     [mod] =&gt; list
  )
  1hogehoge  </SPAN>
    <SCRIPT type="text/javascript">
    HTML_AJAX.replace('list','output.php?page=list&amp;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>


トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Third Project
証券会社ランキング比較