amazonAPIから帰ってきた配列data.Items.Item部分の要素数を知りたいのですがどのように書けばいいですか?
jsonデータサンプルは以下URLにUPしています。
http://neoregi.com/sample/ItemSearch.txt
ちなみに、サンプルではdata.Items.Item部分の要素数は10個です。
捕捉に記してあるコードでは一応希望通り表示されますが、方々でエラーが出ますので要素数を数えてforのカウンターにセットした方がいいのかなと考えました。
他にもダメな部分があったら教えていただければ幸いです。
よろしくお願いします。
戻りはJSON ですか? XML ではなく?
どちらも要素数は length プロパティで取得できますが。
とりあえず、data.Items.Item と data.Items.Item.ImageSets.ImageSet の要素数で for を回した方が良いですね。
$.ajax({ ... }) .done(function(data){ item_position = data.Items.Item; $('#content').empty(); for(var i = 0; i < item_position.length; i++){ // ★ここ if(item_position[i]){ var item_defaultimg = $('<img>').attr('src', item_position[i].MediumImage.URL); $('#content').append('<p>' + item_position[i].ItemAttributes.Title).append(item_defaultimg); } for(var j = 0; j < item_position[i].ImageSets.ImageSet.length; j++){ // ★ここ if(item_position[i].ImageSets.ImageSet[j]){ var item_setimg = $('<img>').attr('src', item_position[i].ImageSets.ImageSet[j].SmallImage.URL); $('#content').append(item_setimg); } } } }) .fail(function(data){ console.dir(data); });
$.ajax({ ... }) .done(function(data){ item_position = data.Items.Item; $('#content').empty(); for(var i = 0; i < 20; i++){ if(item_position[i]){ var item_defaultimg = $('<img>').attr('src', item_position[i].MediumImage.URL); $('#content').append('<p>' + item_position[i].ItemAttributes.Title).append(item_defaultimg); } for(var j = 0; j < 10; j++){ if(item_position[i].ImageSets.ImageSet[j]){ var item_setimg = $('<img>').attr('src', item_position[i].ImageSets.ImageSet[j].SmallImage.URL); $('#content').append(item_setimg); } } } }) .fail(function(data){ console.dir(data); });
質問文を編集しました。詳細はこちら。