libro
www.tuyano.com
JavaScriptによるHTML5プログラミング入門

XMLHttpRequest Level 2(XHR2)による次世代Ajax通信 (1/5)

作成:2013-02-24 09:59
更新:2013-02-24 09:59

■従来のAjax通信をちょっとおさらい

Ajaxは、今やWeb開発に不可欠の機能といってよいでしょう。実際、JavaScriptでAjaxを利用したことのある人も多いと思います。……で、どうでした?「すっごい便利!」と狂喜乱舞しました?「なんかものすっごく面倒くさいんですけど」と感じた人のほうが多いのではないでしょうか。

XMLHttpRequestは、非常に便利ですが面倒でもあります。これがどういうものだったか、ちょっとおさらいしておきましょおう。

長い間、このオブジェクトはWebブラウザで共通化されていなかった。特に問題児だったのがInternet Explorerで、バージョンによってActiveXオブジェクトとして用意してやらないといけなかったり、とにかく面倒だった。(現在は、IE6以前がほぼ無視してもいいぐらいのシェアに落ち込んでいるため、そのへんは考えなくてもだいたい大丈夫)

通信は、基本的にテキストベースのみ。例えばバイナリデータのやり取りなどはデータを自分でデコードしたりするなど工夫しなければならず、とにかく面倒だった。

通信開始後の処理がonreadystatechangeイベントだけしかない。これは何かあれば全部呼び出されるイベントなので、この中で通信が終了したのか、ステータスは正常かなどを自分でチェックして、正常に通信が完了したことを確認した上でその後の処理をしなければなら↑う、とにかく面倒だった。

こうした問題が解決すれば、Ajaxは更に強力かつ幅広く活用されるようになるでしょう。何しろAjaxが使えなければ今後のWebの発展は望めないだろう、というぐらい重要な技術なのですから。

そうした要望に答えて、新たに仕様制定されたのが「XMLHttpRequest Level 2」(長ったらしいのでXHR2と略)です。これは、まぁHTML5とは関係ないんですが、HTML5の技術が実装されていくのにあわせてブラウザが対応してきた技術なので、「HTML5の周辺技術の一つ」というような感じで考えても良いと思います。

このXHR2で実現している機能を整理すると、ざっと以下のような感じになるでしょう。

バイナリデータなど各種データのサポート。
通信完了時のイベントの用意。
クロスドメイン通信の実現。

これらが実現すれば、確かにJavaScriptでたいていのサーバー通信ができるようになりそうです。では、主な機能について見ていくことにしましょう。

※プログラムリストが表示されない場合

AddBlockなどの広告ブロックツールがONになっていると、プログラムリスト等が表示されない場合があります。これらのツールをOFFにしてみてください。

※関連コンテンツ

「JavaScriptによるHTML5プログラミング入門」に戻る