今回は Ajax を使い JSON ファイルから配列データを取得し select などに設定する例を示します。
今回の例は都道府県のコードと名称を読込んで select に設定することを行います。
先ずは以下の様な都道府県のコードと名称のリストである JSON ファイルを用意します。
[
{"id":"01", "name":"北海道"},
{"id":"02", "name":"青森県"},
{"id":"03", "name":"岩手県"},
{"id":"04", "name":"宮城県"},
{"id":"05", "name":"秋田県"},
{"id":"06", "name":"山形県"},
{"id":"07", "name":"福島県"},
{"id":"08", "name":"茨城県"},
{"id":"09", "name":"栃木県"},
{"id":"10", "name":"群馬県"},
{"id":"11", "name":"埼玉県"},
{"id":"12", "name":"千葉県"},
{"id":"13", "name":"東京都"},
{"id":"14", "name":"神奈川県"},
{"id":"15", "name":"新潟県"},
{"id":"16", "name":"富山県"},
{"id":"17", "name":"石川県"},
{"id":"18", "name":"福井県"},
{"id":"19", "name":"山梨県"},
{"id":"20", "name":"長野県"},
{"id":"21", "name":"岐阜県"},
{"id":"22", "name":"静岡県"},
{"id":"23", "name":"愛知県"},
{"id":"24", "name":"三重県"},
{"id":"25", "name":"滋賀県"},
{"id":"26", "name":"京都府"},
{"id":"27", "name":"大阪府"},
{"id":"28", "name":"兵庫県"},
{"id":"29", "name":"奈良県"},
{"id":"30", "name":"和歌山県"},
{"id":"31", "name":"鳥取県"},
{"id":"32", "name":"島根県"},
{"id":"33", "name":"岡山県"},
{"id":"34", "name":"広島県"},
{"id":"35", "name":"山口県"},
{"id":"36", "name":"徳島県"},
{"id":"37", "name":"香川県"},
{"id":"38", "name":"愛媛県"},
{"id":"39", "name":"高知県"},
{"id":"40", "name":"福岡県"},
{"id":"41", "name":"佐賀県"},
{"id":"42", "name":"長崎県"},
{"id":"43", "name":"熊本県"},
{"id":"44", "name":"大分県"},
{"id":"45", "name":"宮崎県"},
{"id":"46", "name":"鹿児島県"},
{"id":"47", "name":"沖縄県"}
]
HTML ファイル側のソースですが以下の様になります。
Ajax からの正常戻りの関数で、引数には JSON データの配列が返りますので それを option 句のリストとして整形してやり select の子要素に追加します。
■Ajaxを使いJSONファイルからデータを取得
<html>
<head>
<meta charset="utf-8">
<title>test ajax json file</title>
<script src="https://code.jquery.com/jquery-3.2.1.min.js"></script>
</head>
<body>
<h2>test ajax json file</h2>
都道府県:
<select name="SelectPref" id="SelectPref">
<option value=""></option>
</select>
<button onclick="getPrefData();">Ajax</button>
<script type="text/javascript">
function getPrefData() {
$.ajax({
type: "GET",
url: "pref.json",
dataType: "json",
cache: false,
success: function(PrefData) {
// select の内容削除
$("#SelectPref").empty();
var append = '<option value=""></option> ';
// JSON データを option に展開生成
for(var i = 0; i < PrefData.length; i++) {
append += '<option value="' + PrefData[i].id + '" >';
append += PrefData[i].name;
append += '</option>';
append += ' ';
}
/* forループを以下の様にしてもOK
$.each(PrefData, function(i) {
append += '";
append += PrefData[i].name;
append += '';
append += ' ";
});
*/
// select の内容に設定
$("#SelectPref").append(append);
}
});
return false;
}
</script>
</body>
</html>
簡単なマスタデータを JSON ファイルにまとめて上記の様に取得すれば、区分データぐらいであれば特にデータベースを使わないでもいけると思います。
PR
コメント