非同期通信処理について(おさらい)
AjaxのAの文字は非同期通信処理(Asynchronous)です。
Ajaxとは?
「Ajax」はAsynchronous JavaScript+XMLの略です。
技術そのものではなくWeb関連の技術を新しい組み合わせで連携させる事を指します。
- JavaScript
- CSS
- DOM
- XML
- XMLHttpRequest
- サーバーサイド(PHP,Perl,Java等)
採用例
- Google Mail
- Google Maps
- Google Suggest(検索)
XMLHttpRequestについて
以下ではAjaxの構成要素の中で特にXMLHttpRequestについて簡単にまとめます。
XMLHttpRequestはHttpクライアントを実現するオブジェクトです。
メリット
- JavaScriptで画面遷移なしにサーバーと通信可能で柔軟な動作のRIAを実現可能
- ユーザーの利用環境にプラグイン不要
デメリット
- ブラウザの各バージョンに対応するクロスブラウザ対応が必要
- プログラムがユーザーに丸見えになる
データ転送形式について
Ajaxの「X」はXMLだといわれているがデータ形式はXMLでなくても問題ない
- XML
- テキスト
- サーバー側でHTMLを生成してデータを返すなどするとJavaScriptで面倒な処理を行う必要がないかな?
- JSON(JavaScript Object Notation)
- 軽量型データ交換フォーマットでテキストベースのフォーマット
- {オブジェクト名:値}
- JavaScriptでの読み込み方
var data = eval("JSONデータ") Data.オブジェクト名
備考
非同期処理をJavaScriptで記述するとソースコードが丸見えになってしまうのが気になるところです。
このためJavaScriptの隠蔽化が必要になると思います。
もっとも完全な隠蔽化は不可能ですが・・・。
方法としてはJavaScriptの外部ファイル化です。
(外部ファイルはキャッシュされるのでパフォーマンスも向上する。)
ただし、HTMLにURLが表示されるので直接アクセスされると意味がない よって、CGIを外部ファイルとして呼び出し、CGIからJavaScriptを生成する。 (外部ファイルはjsファイルでなくても良い。) CGIで特定のページ以外からのアクセス時はJavaScriptを表示しないようにする必要があります。 といってもIEで「名前を付けて保存」すると外部ファイルも保存されるので意味ないか?