スタートページ> Javascript> 外部ファイルの読込> Ajaxによる非同期読込
外部ファイルから配列データを読み込む最も標準的な方法は、配列データをXMLで記述することです。
(前提)このページのhead部に次のスクリプトが記述されています。
<script>
function ファイル読込(ファイル名, 読込後処理名) {
var XMLHR = new XMLHttpRequest();
XMLHR.onreadystatechange = function() {
if (XMLHR.readyState == 4 && XMLHR.status==200) {
var 読込文 = XMLHR.responseXML;
// XMLファイルではresponseTextではなくresponseXML
var 読込後処理
= new Function("引数", "return " + 読込後処理名 + "(引数)");
読込後処理(読込文);
}
}
XMLHR.open("GET", ファイル名, true);
XMLHR.send(null);
}
function 表示クリア(表示場所) {
document.getElementById(表示場所).innerHTML = "";
}
</script>
<button onClick="ファイル読込('aaa.html', '表示処理')">読込</buttom>
とすると、aaa.html の全文が文字列変数「読込文」を引数として関数「表示処理(読込文) { …… } 」が起動されます。
なお、読み込まれるファイル(aaa.html)を子ファイル、読み込むファイル(このページ)を親ファイルといいます。どちらも文字コード UTF-8 で記述されているものとします。
<?xml version="1.0" encoding="utf-8"?> <学生表> <学生> <番号>123456</番号> <氏名>鈴木太郎</氏名> <学部>工学部</学部> </学生> <学生> <番号>987654</番号> <氏名>佐藤花子</氏名> <学部>文学部</学部> </学生> <学生> <番号>111111</番号> <氏名>佐藤二郎</氏名> <学部>文学部</学部> </学生> </学生表>
EによりXML子ファイル(called/callled.xml)が「ファイル読込」により読み込まれた「読込文」が、Aにより「学生表」として「XML表示」関数に引き渡されます。 「XML表示」では、「学生表」を「学生番号[]」などの通常の配列にして表示します。
<script> function XML表示(学生表) { // A var 学生番号 = new Array(); // B var 学生氏名 = new Array(); var 学生学部 = new Array(); var 学生 = 学生表.getElementsByTagName("学生"); // C var 番号 = 学生表.getElementsByTagName("番号"); var 氏名 = 学生表.getElementsByTagName("氏名"); var 学部 = 学生表.getElementsByTagName("学部"); var 学生数 = 学生.length; for (var i = 0; i < 学生数; i++) { 学生番号[i] = 番号[i].childNodes[0].nodeValue; // D 学生氏名[i] = 氏名[i].childNodes[0].nodeValue; 学生学部[i] = 学部[i].childNodes[0].nodeValue; } var 表示内容 = "学生数=" + 学生数 + "<br>"; for (i = 0; i < 学生数; i++) { 表示内容 += "学生番号" + i + "]=" + 学生番号[i] + " 学生氏名" + i + "]=" + 学生氏名[i] + " 学生学部" + i + "]=" + 学生学部[i] + "<br>"; } document.getElementById("表示場所").innerHTML = 表示内容; } </script> <button onClick="ファイル読込('called/called.xml', 'XML表示')">表示</button> <!-- E -->
▼▼▼▼▼ ここから ▼▼▼▼▼
▲▲▲▲▲ ここまで ▲▲▲▲▲