jQueryのwhen()を使ってURLのパラメータによって異なるjsonファイルを読み込もうとしていたのですが、取得するファイル数が1つと複数で取得する中身が変わっていました。
サンプルコード
今回使用するjsonファイルは以下です。
sample01.json / sample02.json
sample01.jsonの”a”の値を取得してみます。
まずは取得するjsonファイルが1つ(sample01.jsonのみ)の場合です。
JavaScript
$(function() {
var getJson = $.when (
$.getJSON('sample01.json?' + parseInt((new Date)/1000), function(sample01) {})
);
getJson.done(function(sample01, todayjson) {
console.log(sample01['a']); // dataA
});
});
sample01.json内の”a”の値を取得したい場合、sample01[‘a’]で取得できます。
jsonを1つ取得する場合のデモページ
サンプルコード2
取得するjsonファイルが2つの場合です。
JavaScript
$(function() {
var getJson = $.when (
$.getJSON('sample01.json?' + parseInt((new Date)/1000), function(sample01) {}),
$.getJSON('sample02.json?' + parseInt((new Date)/1000), function(sample02) {})
);
getJson.done(function(sample01, sample02) {
console.log(sample01);
console.log(sample02);
console.log(sample01[0]['a']); // dataA
});
});
sample01.json内の”a”の値を取得したい場合、sample01[0][‘a’]での取得になります。
jsonを2つ取得する場合のデモページ
サンプルコード3
取得するjsonファイルは1つ(sample01.jsonのみ)ですが、whenでの処理が2つある場合です。
JavaScript
$(function() {
function sample() {
alert('アラート');
}
var getJson = $.when (
$.getJSON('sample01.json?' + parseInt((new Date)/1000), function(sample01) {}),
sample()
);
getJson.done(function(sample01, todayjson) {
console.log(sample01);
console.log(sample01[0]['a']); // dataA
});
});
この場合もサンプル2と同じく、sample01[0][‘a’]で”a”の値が取得できます。
jsonを1つ取得で処理が複数ある場合のデモページ
このように、あまりないかもしれませんがwhenでの処理が1つの場合と2つ以上の場合でjsonの取得内容が少し変わるので注意が必要です。
コメントが承認されるまで時間がかかります。