JSONの一般的な用途は、Webサーバからデータを読み、Webページにデータを表示することです。
この章では、XMLHttpを使用したJSONデータの入力方法を、4つ簡単なステップに分けて解説します。
この例は、myTutorials.txtからメニューを読んで、webページにそのメニューを表示します:
<div id="id01"></div>
<script>
var xmlhttp = new XMLHttpRequest();
var url = "myTutorials.txt";
xmlhttp.onreadystatechange = function()
{
if (xmlhttp.readyState == 4 && xmlhttp.status ==
200) {
var myArr = JSON.parse(xmlhttp.responseText);
myFunction(myArr);
}
}
xmlhttp.open("GET", url, true);
xmlhttp.send();
function myFunction(arr) {
var
out = "";
var i;
for(i = 0; i <
arr.length; i++) {
out += '<a
href="' + arr[i].url + '">' +
arr[i].display + '</a><br>';
}
document.getElementById("id01").innerHTML = out;
}
</script>
1: オブジェクトの配列を作成します。
オブジェクトの配列を宣言するために配列リテラルを使用します。
各オブジェクトに2つのプロパティdisplay と urlを設定します。
配列名をmyArrayとします:
var myArray = [
{
"display": "JavaScript Tutorial",
"url": "http://www.w3schools.com/js/default.html"
},
{
"display": "HTML Tutorial",
"url": "http://www.w3schools.com/html/default.html"
},
{
"display": "CSS Tutorial",
"url": "http://www.w3schools.com/css/default.html"
}
]
2: 配列を表示するJavaScript関数を作成します。
配列オブジェクトをループし、HTMLリンクとしてコンテンツを表示する関数myFunction()を作成します:
function myFunction(arr) {
var out = "";
var i;
for(i = 0; i < arr.length; i++) {
out += '<a href="' + arr[i].url + '">' + arr[i].display + '</a><br>';
}
document.getElementById("id01").innerHTML = out;
}
アーギュメントmyArrayでmyFunction()をコールします:
3: テキストファイルを作成します
myTutorials.txtという名前のファイルに配列リテラル設定します:
[
{
"display": "JavaScript Tutorial",
"url": "http://www.w3schools.com/js/default.html"
},
{
"display": "HTML Tutorial",
"url": "http://www.w3schools.com/html/default.html"
},
{
"display": "CSS Tutorial",
"url": "http://www.w3schools.com/css/default.html""
}
]
4: XMLHttpRequestを使用しテキストファイルを読込みます
テキストファイルを読込ためにXMLHttpRequestを記述し、 配列を表示するのにmyFunction()を使用します:
var xmlhttp = new XMLHttpRequest();
var url = "myTutorials.txt";
xmlhttp.onreadystatechange = function() {
if (xmlhttp.readyState == 4 &&
xmlhttp.status == 200) {
var myArr = JSON.parse(xmlhttp.responseText);
myFunction(myArr);
}
}
xmlhttp.open("GET",
url, true);
xmlhttp.send();