連載:Ajaxで作るインタラクティブWebアプリケーション
(3)
JSONによるデータ通信でAjaxアルバムを完成させる
田中 孝太郎
dotimpac.to
2006/3/17
通信機能を搭載したPhtoAlbumサンプル |
それではPhtoAlbumの解説に入っていこう。今回のサンプルのファイル構成は次のようになる。
今回のサンプルのような、JavaScript側でほとんどの画面処理を行うWebアプリケーションでは、サーバ側でのデータ処理やHTML生成などのルーチンが通常に比べてかなり少なくなる。今回はサーバ側にRubyによるCGIを用意するが、同様の機能はPerlやPHPなどでも簡単に実現できるだろう。自分の得意な言語で試してみてほしい。
・ファイル一覧
|
index.cgiでは、
|
という2つの処理を行っている。html表示は基本的に前回までのサンプルのhtmlページを出力するのみなので、解説は省略させていただく。PhtoAlbumデータの出力については、Ajaxでのデータ通信形式も含め解説していこう。
JSONによるデータ通信 |
通常のWebアプリケーションの場合、リクエストされると必ず次の画面を表示する必要があるため、常に完結したHTMLを返すことになるが、Ajaxアプリケーションでは通信内容が画面にそのまま表示されるとは限らないので、場合に応じたデータ形式で応答することができる。Ajaxの「X」はXMLであるといわれているが、実際にはXMLで通信しなければならないわけではない。画面の表示内容を差し替えるような場合には、部分的なhtmlを返信し、そのまま変更要素のinnerHTMLを書き換える方が簡単なため、実はかなり多用されている。
このサンプルでは「JSON」と呼ばれる形式でファイル名などのPhtoAlbumデータを返信するようにしている。JSON(JavaScript Object Notation)とは、JavaScriptのオブジェクト定義リテラルを、汎用のデータ記述形式として一般化したフォーマットである。非常にシンプルな形式で読み書きしやすく、またJavaScript側で使用する際はリテラルとしてそのまま変数に収めればオブジェクトとして使用できるため、Ajaxでの通信ではかなり有用である。
cgiのJSON出力処理と、実際に出力されるJSONを見ておこう。実際にはRubyほか各言語にJSONライブラリが提供されており、それを用いて配列やオブジェクトを直接JSONテキストに変換することができるが、今回のサンプルではなるべく単体で動作するように、直接出力している。本来はライブラリを使うことが望ましいだろう。
if Cgi.params['dir'][0] |
出力されるJSONは、次のようになる。
{title:'album1', |
今回のサンプルではテキストが含まれないためあまり関係ないが、XMLHTTPの通信を使用する場合、日本語文字コードに注意する必要がある。文字コードとブラウザの組み合わせによっては、文字化けが発生することがあるからだ。現状では、UTF-8に統一しておくのがトラブルが少ないため、サンプルでもUTF-8で出力している。
2/3 |
INDEX |
||
Ajaxフォトアルバムのフェードイン画像フレームを作ろう | ||
Page1<PhtoAlbumを完成させよう> Ajaxの「非同期」とは非同期通信ではない/JavaScriptライブラリの最新状況 |
||
Page2<通信機能を搭載したPhtoAlbumサンプル>
JSONによるデータ通信/指定要素の位置まで画面をスクロールするエフェクト |
||
Page3<PrototypeのAjaxオブジェクト> |
古くて新しいAjaxの真実を見極める 「Webインターフェイスの新しい手法」「画期的なWebアプリケーションの仕組み」であるとして開発者たちの人気を集めるAjaxとは何なのか、その真実を見極めてみよう 最終更新 2005/8/2
|
- GASで棒、円、折れ線など各種グラフを作成、変更、削除するための基本 (2017/7/12)
資料を作る際に、「グラフ」は必要不可欠な存在だ。今回は、「グラフの新規作成」「グラフの変更」「グラフの削除」について解説する - GET/POSTでフォームから送信された値をPHPで受け取る「定義済みの変数」【更新】 (2017/7/10)
HTMLのフォーム機能についておさらいし、get/postメソッドなどの内容を連想配列で格納するPHPの「定義済みの変数」の中身や、フォーム送信値の取り扱いにおける注意点について解説します【PHP 7.1含め2017年の情報に合うように更新】 - PHPのfor文&ループ脱出のbreak/スキップのcontinue【更新】 (2017/6/26)
素数判定のロジックからbreak文やcontinue文の利点と使い方を解説。for文を使ったループ処理の基本とwhile文との違い、無限ループなども併せて紹介します【PHP 7.1含め2017年の情報に合うように更新】 - Spreadsheetデータの選択、削除、挿入、コピー、移動、ソート (2017/6/12)
Spreadsheetデータの選択、挿入、削除、コピー、移動、ソートに使うメソッドの使い方などを解説する
|
|