アンケートご協力のお願いgihyo.jpでは,2010年度に向けて豪華プレゼントが当たる読者属性アンケートを実施しております。ご協力ください。

gihyo.jp » DEVELOPER STAGE » 特集 » jQueryではじめるAjax » 第2回 jQueryによるAjax実装

jQueryではじめるAjax

第2回 jQueryによるAjax実装

第1回ではJSONPによるAjax実装を取り上げましたが,今回はそこで使ったJSONという表記法と,JSONPというAjax実装手法について解説します。また,jQueryによる簡単なAjaxの実装についても解説します。

JSONってなに?

JSONとは,JavaScript Object Notationの略称です。ECMAScript言語 ECMA-262をベースに作られた,Javascriptオブジェクトの表記法のサブセットです。

JSONは,名前と値のペア,および,順序付きの値という2つのシンプルな構造に基づいて,構造化データを簡潔に表現することができます。

オブジェクト(名前と値のペアの集まり)

JSONでオブジェクトを表現するには,メンバを「{」と「}」で囲みます。複数のメンバは「,」で区切られます。例えば,名前が「color」,値が「green」というメンバを持つオブジェクトを表現するには,次のように記述します。

{"color": "green"}

試しに,このオブジェクトを生成し,アクセスしてみましょう。

リスト1

// オブジェクトの生成
var obj = {"color": "green"};

// "color" プロパティにアクセス
alert(obj.color);       // "green"

alert(obj["color"]);    // "green"

配列(順序付きの値の集まり)

JSONで配列を表現するには,値を「[」と「]」で囲みます。複数の値は「,」で区切られます。例えば,「red」「green」「blue」という値を持つ配列を表現するには,次のように記述します。

["red", "green", "blue"]

試しに,この配列を生成し,アクセスしてみましょう。

リスト2

// 配列の生成
var array = ["red", "green", "blue"];


// 配列の各要素にアクセス
alert(array[0]);    // "red"
alert(array[1]);    // "green"
alert(array[2]);    // "blue"

構造化

オブジェクト,配列はネストすることができます。例えば,以下のようにしてオブジェクトを表現することができます。

リスト3

// オブジェクトの生成
var obj = {
    "title" : "reunion",
    "users": [
        {
            "name": "aoki",
            "code": "0001",
            "age": 34
        },
        {
            "name": "ueno",
            "code": "0002",
            "age": 33
        }
    ]
};


// 各メンバにアクセス
alert(obj.title);            // "reunion"

alert(obj.users[0].name);    // "aoki"
alert(obj.users[0].code);    // "0001"
alert(obj.users[0].age);     // "34"

alert(obj.users[1].name);    // "ueno"

alert(obj.users[1].code);    // "0002"
alert(obj.users[1].age);     // "33"

表記の制約

名前は文字列でなければなりません。かならず「"」で囲みます。

値は,文字列,数値,オブジェクト,配列,真偽値(true,false),nullのいずれかです。文字列は,「"」で囲まれたUnicode文字の集まりです。数値は,10進数のみ表記できます(整数,浮動小数点)。

基本的にこの表記法がJSONです。とてもシンプルですね。詳細は以下を参照してください。

参考

Youtube APIのデータフォーマットにjson-in-script(JSONP)を指定すると,このJSONでデータが返ります。Youtubeからのレスポンスデータがどのような構造になっているか,解析してみてください。

なぜJSONを使うのか

Ajaxの「x」は,XMLの頭文字です。もともとは,戻り値の形式としてXMLが想定されていました。Youtubeのレスポンスデータも,何も指定しないとatom(XML)になります。しかしなぜ,XMLではなくJSONを使うのでしょうか(もちろんXMLを使ってもかまいません)。

最大の理由はJavascriptで扱いやすいことです。JSONはJavascriptオブジェクトの表記法のサブセットなので,そのテキストをJavascriptとして評価するだけで扱えるようになります。

現在,JavascriptでXMLを扱う場合は,何かしらのライブラリを介すのが一般的です。ECMAScript for XMLという,ECMAScriptからXMLをネイティブに扱うための言語拡張も仕様化されていますが,対応するWebブラウザはまだ少ないのが現状です。

参考

著者プロフィール

池田正一(いけだまさかず)

仕事ではもっぱらJavaを使い,たまにC/C++を書かされ,WebサービスをRubyで開発するプログラマ。ドラえもん好きでドラえもんSuperDatabaseの管理人。stacktrace.jpにて頭の中のStackを出力中。

トラックバック

  • [JavaScript]jQueryで始めるAjax その2

    http://gihyo.jp/dev/feature/01/jquery-ajax/0002 第2回はJSONとJQuery入門。 JSONはJavascriptオブジェクトの表記法のサブセット、XMLよりもJavascriptで扱いやすい。 JSONPはJSONデータを引数としてJavascriptの関数を呼び出す形式。 XMLHttpRequestオブジェクトと違い

    Tracked : #1  学生webデザイナーのブログ (2008/12/28, 20:18)

コメント

コメントの記入

パスサポ

多数の情報処理技術者試験対策書籍の発行実績を誇る技術評論社がお届けする,資格試験合格サイト「めざせ! 情報処理試験 パスサポ」が開設されました。

ピックアップ

サクセスストーリーに続く,快適サーバー運用管理のヒント!

データの増大,煩雑な管理,システムダウン,セキュリティなど,迫りくる課題からシステム管理者の負担を軽くするポイントを解説します。

gihyo.jp インフラエンジニア情報局

ネットワークやITにかかわるあらゆる業種で必要とされるインフラエンジニアに向けた技術情報や心構え,その魅力について多角的に紹介。

テストエンジニア ステーション

いま,ITに関わるあらゆる開発業務で注目されつつあるテスト系エンジニアをターゲットにしたコンテンツサイトを展開します。

一行クイックアンケート

gihyo.jpで取り上げてほしいネタは?

※検索はページ右上の検索ボックスをご利用ください。

その他の連載

キーパーソンが見るWeb業界

本連載はWeb Site Expert/gihyo.jpとの連動企画です。阿部淳也, 長谷川敦士, 森田雄のお三方による,Web業界をテーマにした座談会です。

きたみりゅうじの聞かせて珍プレー

ソフトウェア開発の現場で体験したトホホな失敗,思わずうなる珍プレーをきたみりゅうじ氏が四コママンガで紹介。みなさんからの投稿もお待ちしてます!

ActionScript 3.0で始めるオブジェクト指向スクリプティング

野中文雄氏が,簡単なスクリプトは書いたことがあるという初級者を対象に,ActionScript 3.0の基本からクラス定義までを解説します。

まだ間に合う「ITパスポート」受験対策 原山先生の短期合格塾

この連載では,4月18日のITパスポート試験の受験に向けて,短い期間で効率良く受験対策を行う方法や,確実に得点するための裏ワザなどを伝授していきます。

Ubuntu Weekly Recipe

Ubuntuの強力なデスクトップ機能を活用するための,いろいろなレシピをお届けします。

C/C++プログラマのためのDTrace入門

よくカーネルのチューニングや解析で活用されるDTraceですが,実はユーザプログラムの開発においても非常に有用です。連載ではC/C++プログラマやテストに関わる方向けにDTraceの使い方を解説します。

Blogopolisから学ぶ計算幾何

計算幾何学は,図形に関するアルゴリズムを研究するコンピュータサイエンスの一分野です。本連載では,ビジュアルブログ検索エンジン「Blogopolis」で採用されている計算幾何のアプローチを例に取り上げながら,計算幾何の初歩を実践的に学習します。

検索エンジンはいかにして動くのか?

本連載では, 今や誰もが利用している検索エンジンの中身を,全体の仕組みやデータ構造,アルゴリズムから分散インデックスまで,最近の研究事例も交えて紹介します。

連載一覧

gihyo.jp

  • DEVELOPER STAGE
  • ADMINISTRATOR STAGE
  • WEB+DESIGN STAGE
  • LIFESTYLE STAGE
  • SCIENCE STAGE
  • NEWS & REPORT

書籍案内

  • 新刊書籍
  • 書籍ジャンル一覧
  • 書籍シリーズ一覧
  • 新刊ピックアップ
  • ロングセラー
  • 電脳会議

定期刊行物一覧

  • Software Design
  • WEB+DB PRESS
  • Web Site Expert
  • 組込みプレス