ココを理解すれば近道な「Ajaxフレームワーク」:Web 2.0で変わるWebプログラミングの常識(3/5 ページ)
AjaxをWebアプリケーションに取り入れるには、デファクトスタンダードなフレームワークを利用するのがよい。基礎を理解すると、さまざまな応用例が考えられるはずだ。
ここでは、prototype.jsで提供される「$()関数」を使って、次のspan要素へと結果を差し込んでいる。
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
一方で失敗した時には、次に示すAjaxFailed関数を呼び出すようにしてある。
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
この処理は、statusTextプロパティを参照して、HTTPのエラーメッセージをユーザーに表示しているだけだ。
Ajax.Responseオブジェクトを使って通信する際に注意したいのは、onSuccessプロパティやonFailureプロパティで指定した関数が呼び出されるタイミングであることだ。
これらのプロパティで指定した関数は、XMLHttpRequestオブジェクトによって通信が完了した時に呼び出される。より分かりやすく言えば、XmlHttpRequestオブジェクトのreadyStateプロパティが「4」になった場合にしか、これらのメソッドは呼び出されない。
つまり通信中にエラーが起きた時には、onFailureプロパティで指定した関数は呼び出されない。onFailureプロパティでフックできるのは、「HTTP通信自身は成功したが、HTTPステータスコードが正常ではなかった時」に限られるのだ。
通信そのものが失敗した時の処理を記述したい場合には、次に説明するonExceptionプロパティを使う必要がある。
この処理の詳細は、prototype.jsのソースを見ると理解することができる。prototype.jsでは、通信が成功した時に、XMLHttpRequestオブジェクトのstatusプロパティ(HTTPのステータスコード)を調査し、ステータスが200番台の場合にはonSuccessプロパティで指定された関数を、そうでない場合にはonFailureプロパティで指定された関数を呼び出すように処理されている。
また、ソース内容をよく見ると、「onステータス番号」というプロパティも有効であることが分かる。例えば、「on200」や「on304」、「on403」などのプロパティを用意すれば、それぞれステータスコードが200番、304番、403番の時に呼び出される関数を定義できるのだ。
3. 例外処理
Ajax.Requestオブジェクトでの処理中に例外が発生すると、onExceptionプロパティで指定した関数が呼び出される。
リスト6では、次のように処理している。
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
渡される第1引数はXMLHttpRequestオブジェクト、第2引数は例外を示すExceptionオブジェクトだ。
Copyright © ITmedia, Inc. All Rights Reserved.