【问题标题】:Jquery two api calls to retrieve different dynamic elements inside two nested $.each loopsJquery 两个 api 调用以检索两个嵌套 $.each 循环内的不同动态元素
【发布时间】:2013-01-06 09:59:37
【问题描述】:

我有一个包含顶级元素的 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"

【问题讨论】:

  • 更新:我能够通过仔细检查包装对象来解决它。我得到了错误的对象并得到了“未定义”的响应。循环现在可以工作了。

标签: javascript jquery json api loops


【解决方案1】:

尝试将第二个 getJSON 包装到匿名函数中并将品牌作为参数传递::

(function(brand){
  $.getJSON('phonebrandsurl' + brand, function(data){
  // ...
}(brand))

【讨论】:

  • 一月你好。抱歉我的回复晚了。我尝试了该选项,但输出没有改变。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-12-18
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多