$.getJSON()

HTTPのGET通信を行い、json形式に変換されたデータをサーバから受け取ります。

$.getJSON( url [, data] [, success(data, textStatus, jqXHR)] ) 1.0追加

戻り値:jqXHR

引数説明
url リクエストの送信先URLを指定します。
[data] サーバに送信する値をマップ値で指定します。 サーバーに送信される前にURLエンコードが施されたURLクエリーの文字列に変換されます。
[success
(data, textStatus, jqXHR)]
リクエスト成功時の処理を関数として指定します。 関数の引数としてdata, textStatus, jqXHRの3つの値を受け取る事が出来ます。

$.getJSONは$.ajaxの略記です。$.ajax関数で次のように指定した処理と同じ処理を実行します。

$.ajax({
  //type: オプションは$.ajaxの初期値で"GET"です。
  url: url,
  dataType: 'json',
  data: data,
  success: success,
});

例えば、サーバが下記のようなjsonを返してくれる場合、successに指定する関数は次のように実装を行います。

サーバが返すjson値

{
  "one": "Singular sensation",
  "two": "Beady little eyes",
  "three": "Little birds pitch by my doorstep"
}

クライアント側

$.getJSON(
  'ajax/test.json',
  function(data) {
    var items = [];

    //dataがサーバから受け取るjson値
    $.each(data, function(key, val) {
      items.push('<li id="' + key + '">' + val + '</li>');
    });

    //サーバから受け取った値をULリストにしてBody内に挿入
    $('<ul/>', {
      'class': 'my-new-list',
      html: items.join('')
    }).appendTo('body');
  }
);

デモ

Flickrのjsonp APIを利用して写真データを取得して並べる処理を行なっています。 (jQuery公式サイトではシアトルのレーニア山の画像を指定していますが、ここでは富士山の画像を指定してみました。)

<!DOCTYPE html>
<html>
<head>
  <style>img{ height: 100px; float: left; }</style>
  <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>
</head>
<body>
  <div id="images">
</div>
<script>
$(document).ready(function(){
  $.getJSON("http://api.flickr.com/services/feeds/photos_public.gne?jsoncallback=?",
    {
      tags: "mount fuji", //富士山を指定
      tagmode: "any",
      format: "json"
    },
    function(data) {
      $.each(data.items, function(i,item){
        $("<img/>").attr("src", item.media.m).appendTo("#images");
        if ( i == 2 ) return false;
      });
    });
  });
</script>
</body>
</html>

 Back to top

© 2010 - 2017 STUDIO KINGDOM