jQueryのwhen()で取得が1つの場合と複数の場合で中身が変わる

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の取得内容が少し変わるので注意が必要です。
 

このエントリーをはてなブックマークに追加

関連記事

コメントを残す

メールアドレスが公開されることはありません。
* が付いている欄は必須項目です

CAPTCHA


コメントが承認されるまで時間がかかります。

2024年11月
 12
3456789
10111213141516
17181920212223
24252627282930