Ajaxで用いるデータフォーマットの比較 (JavaScriptコード)

特定のデータフォーマットは用いず、直接JavaScriptのコードを返す手法である。このときブラウザは、サーバが返したコードをevalで直接実行する。例えば次のようなコードをサーバは返す。

insert_cities(["青ケ島青ケ島村", "あ"], ["足立区", "あ"])

サーバ側でクライアントに配慮する部分が増えるので、単純に考えると、JavaScriptコードを用いても利点がないように思える。

しかし、JavaScriptコードはAjaxのデータフォーマットとして広く用いられている。例としては、Google Suggest, doc's feeds/json/ Bookmarks があげられる。何故JavaScriptコードが広く用いられているのであろうか?

これは、JavaScriptコードを用いたAjaxでは、XMLHttpRequestメソッドが必ずしも必要ないためである。そのため、対応ブラウザを拡大したり、ドメインを超えたAjaxが可能となる。XMLHttpRequestは便利だが、対応ブラウザが限定されるし、ドメイン外からデータを取得することはできない。一方、JavaScriptコードを用いれば、比較的古いブラウザでも、動的に外部スクリプトの実行が可能である。なお、外部スクリプトの動的な実行には、いくつかのテクニックが必要だが、それはまた後日まとめる。