Ajaxの真価はWebサービス連携にありWeb 2.0で変わるWebプログラミングの常識(3/4 ページ)

» 2006年08月23日 08時00分 公開
[大澤文孝,ITmedia]

 JSON-PHPライブラリでは、Services_JSONオブジェクトのencodeメソッドを呼び出すと、引数に渡した変数の内容がJSONデータとなる。つまりクライアントには、


{"add":400,"diff":200}

といった書式の文字列が返されることになる。

 この例にあるように、JSONデータのContent-Typeには、慣例的に「text/json」が使われる。しかし「text/plain」などでも構わない。

 変数に日本語が含まれている場合には、encodeメソッドでエンコードする前に、UTF-8に変換しておく必要があることを忘れないでおこう。

 一方でクライアント側の受信部は、次に挙げるリスト4のように構成する。

リスト4■JSONデータをパースする受信部

function statechange()
{
	// 要求ステータスが変化したときに呼び出されるイベントハンドラ
	if (req.readyState == 4)
	{
		if (req.status == 200)
		{
		// 受信完了かつデータが存在する
		// JSONデータとして受け取る
		var jsontext = req.responseText;
		var result = eval('(' + jsontext + ')');
		// に設定
		document.getElementById('addvalue').innerText = result['add'];
		document.getElementById('diffvalue').innerText = result['diff'];
		}
		else
		{
			// エラー
			alert(req.statusText);
		}
	}
}

 このリストで注目すべき点は、まずは、XMLHttpRequestオブジェクトのresponseTextプロパティを参照し、サーバから送信されたJSONデータを文字列として取得する次に挙げる個所だ。


var jsontext = req.responseText;

 これにより変数jsontextには、先に説明した、次に挙げる形式の文字列が得られる。


{"add":400,"diff":200}

Copyright © ITmedia, Inc. All Rights Reserved.

注目のテーマ