JSON(JavaScript Object Notation)
とは、JavaScriptの派生したサブセットであり、
言語というよりも、データ交換を行なうためのデータ記述形式のことである。
下記のようにJSONのデータ形式は、非常に軽量でシンプルかつ理解しやすい
データフォーマットである。
{ "SHNAME" : "Cカセット編集ビデオ" , "SHTANK" : "85,000", "SHSCOD" : "0002" , }
記述方法は、 "名前" : "値" といった形式で記述され、カンマ ( , )でデータを区切る。
これだけでは、単なるJSONのデータを定義したに過ぎないので何の役にも立たない。
まずJSONとは、データ交換を行なうためのデータ形式であると理解して下さい。
それでは、実際にどのようにしてJSONが使用されるか簡単なサンプルで説明しよう。
SAMPLE.JSONは、"名前" : "値" の形式で配列データが定義されており、それに加え
JavaScriptの関数を [ callback関数 ] 呼び出す形式にする必要がある。
ここでは callback
という関数を呼び出すように記述する。
callback({"SHNAME" : "Cカセット編集ビデオ", "SHTANK" : "85,000", "SHSCOD" : "0002"});
JSONファイルの記述はこれだけである。
前述 「101.クロスドメインとは」 で説明したように、 異なるドメインのデータは Ajax(XMLHttpRequest)では
取得できない。
それではどのように異なるドメインのデータを取得するのか?
下記のようにすれば簡単に取得できるのである。
JavaScriptの外部ファイル記述を <script src =〜></script>
指定するように記述すれば、
異なるドメインのJavaScriptファイル(SAMPLE_JSON.JSON)をクロスドメインの制約を受けずに
取得することができる。
<html>
<head>
<meta http-equiv="Content-Language" content="ja">
<meta http-equiv="Content-Type" content="text/html; charset=shift_jis">
<title>JSONサンプル 商品データ取得</title>
<script language="JavaScript">
/* JSONファイル取得 */
function getJsonDta(val){
:
var script = document.createElement("script");
script.type = "text/javascript";
script.src = "SAMPLE_JSON.JSON";
document.body.appendChild(script);
:
SAMPLE_JSON.HTMの <script src="〜"></script>
タグの src
プロパティー記述で
<script src="http://(異なるドメイン)/SAMPLE_JSON.JSON"></script>
(異なるドメイン)に別ドメインまたはIPアドレスを指定)
と指定した<script>タグを動的に生成し追加する。
これで実際に追加した時点で、異なるドメインの SAMPLE_JSON.JSON
ファイルの取得を行う。
/* JSONデータより商品データを各表示領域にセットする */
function callback(jData){
:
for (key in jData) {
document.getElementById(key).innerText=jData[key];
}
:
JavaScript外部ファイルで読み込まれた SAMPLE_JSON.JSON
の callback関数が実行され
データを取得し SAMPLE_JSON.HTM
に書き込みを行う。
: } </script> <body> <h1>JSONサンプル 商品データ取得</h1> <hr> <p>商品コードを入力し フォーカスが離れた後、商品データの内容が表示されます。 <form name="frmDsphead"> <p>商品 コード <input type="text" name=SHCODE id="SHCODE" value="" onChange="getJsonDta(this.value);" maxlength="10" size="12" alt="10A"> <span> 該当コード : NV-CF1 </span></p> </form> <table class="MAIN"> <tr> <th width="100">商 品 名</th> <td width="200" ><span id="SHNAME">商品名称</span></td> </tr> <tr> <th>単 価</th> <td align="right"><span id="SHTANK">単価</span></td> </tr> <tr> <th>品種コード</th> <td><span id="SHSCOD">品種コード</span></td> </tr> </table> <hr> <input type="button" class="HAND" value="閉じる" onClick="self.close();"> </body> </html>
このように、JSON方式でクロスドメインの制約を受けずにJSONデータを使用して
簡単に異なるドメインのサーバーよりデータを受信することが可能となる。