
連載:AjaxとPHPでリッチクライアント(2)
Ajaxを使ったファイルマネージャをPHPで作ろう
上鍵 忠志
日本PHPユーザ会
2006/4/29
| はじめに |
- - PR -
前回からずいぶん時間がたってしまった。前回AjaxACというライブラリを用いてAjaxを使用してみた。今回は予告とは懸け離れるが、一部の読者からリクエストのあった原始的なアプリケーションへのAjaxとPHPの実装について解説したいと思う。
| Ajax×PHPファイルマネージャ実装までの流れ |
今回はJavaScriptからPHPへのアクセス方法、Ajaxを用いたファイルマネージャの実装を行う。
| JavaScriptとPHPの通信 JavaScriptから見たPHPからのリクエストとPHPから見たJavaScriptからのリクエスト Ajaxを使わずにファイルマネージャを作ろう Ajaxを使わないでPHPファイルマネージャの概要と実装スタイル Ajaxを使ってファイルマネージャを作ろう Ajaxへの改変部分と注意点/ファイルマネージャの制限/Ajaxを用いたオープンソースのPHPアプリケーション/phpFreeChat/自前WebにphpFreeChatをコピーしてみよう |
| JavaScriptとPHPの通信 |
JavaScriptはブラウザ上で実行されるインタプリタ言語である。PHPはサーバ上で実行されるインタプリタ言語である。JavaScriptとPHPのメッセージの流れは基本的に@IT上のほかの記事を参考にしてもらうといいだろう。
■JavaScriptでの実装例
下記はJavaScriptからサーバ上のURL、「http://www.example.com/ajax/index.php」へアクセスし、HTML上に存在するID「foo」にリクエスト結果を挿入する例だ。
if(window.XMLHttpRequest) { |
| リスト1 Ajaxのクライアント側の実装例 |
基本的にはこれだけである。やっていることとしては、
- XMLHttpRequestを扱うオブジェクトのインスタンス
- サーバとの通信準備
- 状態監視関数の作成、登録
- HTTPリクエストの送信
の4ステップである。下記は@ITの古くて新しいAjaxの真実を見極めるを併せて読むと理解が深まると思われる。
■XMLHttpRequestを扱うオブジェクトのインスタンス
これは条件分岐がいくつかある処理になっている。理由はブラウザごと(さらにバージョンごと)にXMLHttpRequestを扱うオブジェクトのインスタンス方法が違うからだ。
このロジックはいまのところおまじないのように覚えておいてもいいだろう。
if(window.XMLHttpRequest) { |
| サーバとの通信準備 |
次にウェブサーバとの通信方法(通常GET、POSTを使う)とアクセスするURLを指定する。URLはもともとのドメインから別のところを指定することはできないことに注意したい。
ajax.open( "GET", "http://www.example.com/ajax/index.php"); |
| 状態監視関数の作成、登録 |
次にHTTPサーバとの通信状態の監視関数の作成と登録を行う。この変数ajaxはいくつかのプロパティを持っており、その中の1つにonreadystatechangeがある。
これはHTTPサーバとの通信状態の変化があると、設定された関数が実行されるのである。
詳しくは枯れた新しいUI革命「Ajax」をASP.NETで活用するを参考にするといいだろう。
ajax.onreadystatechange = function() { |
| HTTPリクエストの送信 |
最後は実際のHTTP通信を行うメソッドsend()だ。多くの場合引数にはnullを渡していると思うが、筆者が調べたところnullではなく空文字列を渡す方がいいという記述のページがあったため、筆者は空文字列にしている。
ajax.send(""); |
これは読者の環境に合わせてもいいだろう。
■PHPでの実装例
それではPHP上の実装はどう記述すればいいのか。これは非常に簡単で、ID「foo」に挿入したいテキストを出力するだけである。このテキストはHTML形式で記述する。
<?php |
| リスト2 Ajaxのサーバ側の実装例 |
非常に簡単である。ちなみにAjaxを用いる場合、文字エンコードをUTF-8にしておく方がいい。Ajaxでは通常UTF-8を用いるため、通常UTF-8以外を使用しているシステムの場合、mbstringやiconvなどで何らかの手段で文字エンコードを変換する処理が必要になるだろう。
| 1/3 |
|
INDEX |
||
| Ajaxを使ったファイルマネージャをPHPで作ろう | ||
| Page1<JavaScriptとPHPの通信> JavaScriptでの実装例/XMLHttpRequestを扱うオブジェクトのインスタンス/サーバとの通信準備/状態監視関数の作成、登録/HTTPリクエストの送信/PHPでの実装例 |
||
| Page2<Ajaxを使わずにファイルマネージャを作ろう>
Ajaxを使わないでPHPファイルマネージャの概要と実装スタイル |
||
| Page3<Ajaxを使ってファイルマネージャを作ろう>
どこをAjaxにするか/改変部分/注意点/ファイルマネージャの制限/Ajaxを用いたオープンソースのPHPアプリケーション/phpFreeChat/自前WebにphpFreeChatをコピーしてみよう |
||
- 5分で絶対に分かる、「Webマーケティング」とは (2010/7/27)
その概要や、「Webマーケター」の役割、Webマーケティングを行う際の流れ、歴史、ツール、PCとケータイの違いなどを5分で解説 - Windows 7でも「おばかアプリ選手権」は大爆笑でした (2010/7/26)
ARや3D、脳波センサ、Wiiボード、マルチタッチなど、今回も個性的なアプリがおばか度を競いあった。極め付けは貧乏ゆすりセンサで高橋名人が連射対決!? - Xcode/Interface BuilderでUI設計+イベント処理 (2010/7/23)
BMI計算アプリをサンプルに、1つのiPhoneアプリが完成する過程を、デザインとコーディングの仕方を交えて解説します - Flashで怒涛のごときイベント処理を捌きまくる3技 (2010/7/22)
インタラクティブコンテンツ制作に必須の「イベント」の仕組みを解説し、具体的な高速化の技をサンプルを交えながら3つ紹介
|
|
スキルアップ/キャリアアップ(JOB@IT)
スポンサーからのお知らせ
お勧め求人情報








