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の取得内容が少し変わるので注意が必要です。
コメントが承認されるまで時間がかかります。