私がhtml5jにJSONPとClosure Libraryのgoog.net.Jsonpについて質問したスレッドのまとめです。
元スレ:http://goo.gl/ngnNj
JSONPが生まれた経緯とクロスドメインについて
JSONPについては、オリジナルドメインであればXHRで簡単にできることを、クロスドメインでどうするか?という問題を「 関数でpaddingしたJSONソース(テキストデータ)なら、SCRIPT要素で簡単に変数に格納できる!」という驚きがあり、広く使われるようになったと記憶しています。
JSONPライブラリを使う目的について
Jsonpライブラリを使う目的は、「JSONデータ」を読む事ですね。
機能面では仰るとおり、「ユーザーの訪問時の体感的なレスポンスを向上させる」ものですが、今のブラウザなら、技術的にはXHR2を使うことも可能なわけで。
JSONPについて
<script>
function myfunc(arg){
alert(arg);
}
</script>
と書いておいて、
myfunc('hello');
という1行を書いておいたファイルを
<script src="other.js"></script>
として読み込むと、myfunc()が実行されるのと同じです。
goog.net.Jsonpについて
コールバック関数は第二引数に指定できます。
http://closure-library.googlecode.com/svn/docs/class_goog_net_Jsonp.html
goog.net.Jsonp(url, 'callback');
//としておくと、
function callback(arg){
alert(arg);
}
と、あらかじめ作っておいた関数が実行されます。
JSONPしたあとの要素について
JSONPした後、使った