0

したがって、私が抱えていると思われる問題は、テーブルにデータを入力すると、devtools で呼び出すと API から呼び出された年の値を返すという事実にもかかわらず、オブジェクトdiscogsObjects.yearが一貫して「未定義」でテーブルにデータを入力することです。私のフォーマットはコードと一致しているので、何が問題なのかわかりません...

ありがとうございました!

var discogsObjects = {
    title: [],
    label: [],
    year: [],
};


$(".artistform").submit(function(event){
  event.preventDefault();

  var band = ($("#userInput").val());
  var url = "https://api.discogs.com/database/search?q=" + band + "&key=olnzRAzKsxiVlgocWNCH&secret=RPCwqvPXDmFkHHNzDePPKIcMsHRmNUIK"

  $.ajax({
    url: url,
    type: "GET",
    dataType: "json",
    success: (data)=> {
      console.log(data.results);



      for (i = 0; i<21; i++) {
        for(var key in data.results[i]){
          //if (key === "id") idArr.push(data.results[i][key]);
          if (key === "title")  discogsObjects.title.push(data.results[i][key]);
          if (key === "label") discogsObjects.label.push(data.results[i][key]);
          if (key === "year") discogsObjects.year.push(data.results[i][key]);
        }

          //$thead(.hidden).show()
          // $('#resultsHead').append('<tr><td>Year of Release</td><td>Artist Release</td><td>Record Label</td></tr>');

         $('#resultsTable').append('<tr><td>'+discogsObjects.title[i]+'</td><td>'+discogsObjects.year[i]+'</td><td>'+discogsObjects.label[0]+'</td></tr>');


      }
    }
  });
});
4

1 に答える 1

1

「results」配列で返される最初のオブジェクトは、属性を持たないバンドの説明であるyearため、for ループの最初の反復でyearはオブジェクトの配列が設定されないため、discogsObjectsその後のすべての反復undefinedで、 DOM が 1 つずれているためです。

たとえば、"Maroon 5" を使用すると、返される最初のオブジェクトは次のようになります。

{  
    "thumb":"https://api-img.discogs.com/gcuqJ3Ni4_2F_F_35xU7anju50Q=/150x150/smart/filters:strip_icc():format(jpeg):mode_rgb():quality(40)/discogs-images/A-192151-1452146008-4372.jpeg.jpg",
    "title":"Maroon 5",
    "uri":"/artist/192151-Maroon-5",
    "resource_url":"https://api.discogs.com/artists/192151",
    "type":"artist",
    "id":192151
}

したがって、for ループは「year」という名前のキーを見つけられず、discogsObject.year空になります。discogsObject.year[i]次に、 when i = 0which isを追加しますundefined。次に、 i がインクリメントされ、次のオブジェクトで年が見つかり、年配列にプッシュされますが、DOM に追加するときに実行しようとしているdiscogsObject.year[i]ときですi = 1discogsObject.year.length = 1、これはundefined.

于 2016-08-07T22:19:29.287 に答える