我有一个包含顶部元素的api链接。从每个元素开始,我需要构建第二个api调用的结束,这将给出我需要的其余元素并将它们拉出来。
让我们说第一个json是(urlphonebrands),其中包含3个手机品牌(Apple,Samsung和Nokia)。第二个json电话取决于每个品牌名称,如urlphonebrands / Nokia,或urlphonebrands / Samsung或urlphonebrands / Apple自动构建。
我需要遍历每个品牌名称以获得颜色,电池寿命和尺寸等属性。但每种颜色都有另一个选择循环,例如黑色,白色,红色。我的最终结果将是,
Apple
battery life:
6h
color:
blue
black
Samsung:
battery life:
6h
color:
blue
black
Nokia:
battery life:
3h
color:
blue
虽然我能够成功遍历每个顶部元素,但我只能检索第一个项目的最后一个颜色元素,这表明我错误地构建了第二个循环。经过几个小时,我发现我可以使用一些帮助。这就是我所拥有的,
$.getJSON("urlphonebrands", function(data){
var brandBlock = data[0]['name'];
$.each(data, function(index, brandBlock){
var brand = brandBlock.name;
$('#table').append('<tr><td>' + brand + '</td></tr>');
//It works fine until this point
$.getJSON("phonebrandsurl" + brand, function(data){
$.each(brand, function (index2, brand){
var color = data[0].name[0].color;
$('#table').append('<tr><td>' + color + '</td></tr>');
});
});
});
});
这给了我类似的东西,
Apple
blue
blue
Samsung
blue
blue
Nokia
blue
这是第二次api调用后的console.log输出,
[Object]
0: Object
brand: Array[17]
0: Object
battery life: "6h"
colors: Object
color: "blue"
答案 0 :(得分:2)
尝试将第二个getJSON
包装到匿名函数中,并将品牌传递给param ::
(function(brand){
$.getJSON('phonebrandsurl' + brand, function(data){
// ...
}(brand))