0

上位の要素を含むAPIリンクが1つあります。各要素から、2番目のAPI呼び出しの終わりを作成する必要があります。これにより、必要な残りの要素が取得され、それらが引き出されます。

最初のjsonが(urlphonebrands)で、3つの電話ブランド(Apple、Samsung、Nokia)が含まれているとします。2番目の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 

各トップ要素を正常にループできますが、最初のアイテムの最後のカラー要素しか取得できません。これは、2番目のループを誤って作成したことを示しています。それを数時間行って、私がいくつかの助けを使うことができると思いました。これは私が持っているものです、

$.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

これは、2回目のAPI呼び出し後のconsole.log出力です。

[Object]
0: Object
brand: Array[17]
0: Object
battery life: "6h"
colors: Object
color: "blue"
4

1 に答える 1

2

2番目を無名関数にラップgetJSONして、ブランドをparamとして渡します::

(function(brand){
  $.getJSON('phonebrandsurl' + brand, function(data){
  // ...
}(brand))
于 2013-01-06T10:21:31.810 に答える