[jQuery] jQuery Ajax $.getJSON

クロスドメイン環境で Ajax 通信を行う。

[markdown]
## JSONP

Load JSON-encoded data from the server using a GET HTTP request.

> * [jQuery.getJSON() | jQuery API Documentation](http://api.jquery.com/jQuery.getJSON/)

JavaScript逆引きレシピ jQuery対応
山田 祥寛
翔泳社
売り上げランキング: 187,564

See the Pen jQuery Ajax $.getJSON by DriftwoodJP (@DriftwoodJP) on CodePen.

> * [jQuery: 非同期通信で取得したコンテンツをページに反映させるには?(load) – Build Insider](http://www.buildinsider.net/web/jqueryref/023)
> * [HTTP GET/POSTで非同期通信を実施するには?($.get/$.post) – Build Insider](http://www.buildinsider.net/web/jqueryref/033)
> * [jQuery: JSON形式のWeb APIにアクセスするには?($.getJSON) – Build Insider](http://www.buildinsider.net/web/jqueryref/034)
> * [jQuery: 非同期通信の開始/終了/成功/失敗のタイミングで処理を実行するには?(ajaxXxxxx) – Build Insider](http://www.buildinsider.net/web/jqueryref/035)

## キャッシュの回避

JavaScript本格入門 ~モダンスタイルによる基礎からAjax・jQueryまで
山田 祥寛
技術評論社
売り上げランキング: 9,381

非同期要求を行う際に `if-Modified-Since` ヘッダーを追加してキャッシュを回避する。

> * [XMLHttpRequest.setRequestHeader() – Web APIs | MDN](https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/setRequestHeader)

“`javascript
var d = new Date(1970, 0, 1);
req.setRequestHeader(‘If-Modified-Since’, d.toGMTString());
req.send(null);
“`

[jQuery.ajax()](http://api.jquery.com/jQuery.ajax/) 利用時には、`cache` パラメータを `false` とする。

> * [Ajax | jQuery API Documentation](http://api.jquery.com/category/ajax/)

“`javascript
$.ajax({
url: ‘json.php’,
type: ‘GET’,
cache: false,
:
});
“`

`$.ajax()` 以外の場合、以下

“`javascript
$.ajaxSetup({ cache: false });
“`

もしくは、以下とする。

“`javascript
$(‘*’).ajaxSend(function(ev, xhr, opt) {
xhr.setRequestHeader(
‘If-Modified-Since’, new Date(1970, 0, 1).toGMTString());
});
“`

この場合、`$(‘*’)` は、すべての要素を指定している。

`$(‘*’).ajaxSend()` は、指定された要素セット全体に対して関連づけられるイベント(イベントリスナ)を表していることから、 __グローバルイベント__ とも呼ばれる。
グローバルイベントを利用することで、特定の要素セットすべてに対して適用すべき処理をまとめて定義できる。
例えば `$(‘:button’).ajaxStart( … )` では、すべてのボタンに対して ajaxStart イベントリスナを登録できる。
[/markdown]