スタートページ> Javascript> 外部ファイルの読込> Ajaxによる非同期読込
JSON形式とは、配列を簡単に記述できる形式です。
JSON形式のファイルはJavaScript以外にもCやC++、Java、Perlなどでも取り扱えるので、データ交換フォーマットとして広く使われています。
同様なものにXMLがありますが、JSONのほうがシンプルです。
(前提)このページのhead部に次のスクリプトが記述されています。
<script type="text/javascript">
function ファイル読込(ファイル名, 読込後処理名) {
var XMLHR = new XMLHttpRequest();
XMLHR.onreadystatechange = function() {
if (XMLHR.readyState == 4 && XMLHR.status==200) {
var 読込文 = XMLHR.responseText;
var 読込後処理
= new Function("引数", "return " + 読込後処理名 + "(引数)");
読込後処理(読込文);
}
}
XMLHR.open("GET", ファイル名, true);
XMLHR.send(null);
}
</script>
<input type="button" value="読込" onClick="ファイル読込('aaa.html', '表示処理')"></input>
とすると、aaa.html の全文が文字列変数「読込文」を引数として関数「表示処理(読込文) { …… } 」が起動されます。
なお、読み込まれるファイル(aaa.html)を子ファイル、読み込むファイル(このページ)を親ファイルといいます。どちらも文字コード UTF-8 で記述されているものとします。
JSONでの最も単純な一般形式は、次のような形式で記述します。
{ }や[ ]、「,」の有無に留意してください。
JSONの文法は厳しく、誤りがあると何も表示されません。
子ファイル(called/called-json.json)の内容
{ "学生": [
{ "番号": "123456", "氏名": "鈴木太郎",
"学部": "工学部" },
{ "番号": "987654", "氏名":
"佐藤花子", "学部": "文学部" },
{ "番号": "111111", "氏名": "佐藤二郎" }
]
}
<script>
function JSON表示(読込文) {
var 学生番号 = new Array(); // A
var 学生氏名 = new Array();
var 学生学部 = new Array();
読込文 = 読込文.replace(/[\n\r]/g,""); // B
var 学生表 = eval("(" + 読込文 + ")"); // C
var 学生数 = 学生表.学生.length;
for (var i = 0; i < 学生数; i++) {
学生番号[i] = 学生表.学生[i].番号; // D
学生氏名[i] = 学生表.学生[i].氏名;
学生学部[i] = 学生表.学生[i].学部;
}
var 表示内容 = "学生数=" + 学生数 + "<br>";
for (i = 0; i < 学生数; i++) {
表示内容 += "学生番号[" + i + "] = " + 学生番号[i]
+ " 学生氏名[" + i + "] = " + 学生氏名[i]
+ " 学生学部[" + i + "] = " + 学生学部[i] + "<br>";
}
document.getElementById('表示場所').innerHTML = 表示内容;
}
</script>
<p><input type="button" value="表示"
onClick="ファイル読込('called/called-json.json', 'JSON表示')"></input></p>
▼▼▼▼▼ ここから ▼▼▼▼▼
▲▲▲▲▲ ここまで ▲▲▲▲▲