JSON と JSONP

AngularJS の勉強をしていたら $http.jsonp() が出てきて「!?」となったので JSONP について調べてみた。

こちらの記事がわかりやすかった。
JSONPで悩むある程度の人々へ

今まで違いを意識したことがなかったけれど、異なるドメインJSON データを取得する場合は JSONP を使うっていう認識でよいのだろうか。
ライブラリを使っているとラップされていてわからないけれど、同じ JSON データを取得するのでも、同一ドメインからの場合と異なるドメインからの場合で、内部の実装がだいぶ異なる。

jQuery

同一ドメインJSON データを取得する場合

$.getJSON('somedata.json', function(data) {
  console.log('name: ' + data.name);
  console.log('value: ' + data.value);
});

異なるドメインJSON データを取得する場合

$.getJSON('http://somecompany.com/somedata.json?callback=?', function(data) {
  console.log('name: ' + data.name);
  console.log('name: ' + data.value);
});

AngularJS

同一ドメインJSON データを取得する場合

$http.get('somedata.json', function(data) {
  console.log('name: ' + data.name);
  console.log('value: ' + data.value);
});

異なるドメインJSON データを取得する場合

$http.jsonp('http://somecompany.com/somedata.json?callback=JSON_CALLBACK', function(data) {
  console.log('name: ' + data.name);
  console.log('name: ' + data.value);
});