JSON-PHPライブラリでは、Services_JSONオブジェクトのencodeメソッドを呼び出すと、引数に渡した変数の内容がJSONデータとなる。つまりクライアントには、
{"add":400,"diff":200}
といった書式の文字列が返されることになる。
この例にあるように、JSONデータのContent-Typeには、慣例的に「text/json」が使われる。しかし「text/plain」などでも構わない。
変数に日本語が含まれている場合には、encodeメソッドでエンコードする前に、UTF-8に変換しておく必要があることを忘れないでおこう。
一方でクライアント側の受信部は、次に挙げるリスト4のように構成する。
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.