Sharks with Lazersからこのコードを取得し、わずかに変更しました。
$(function(){
var key="My key";
var url="http://api.songkick.com/api/3.0/search/artists.json?query=" + userSearch + "&apikey=" + key + "&jsoncallback=?";
$.getJSON(url,function(json){
$.each(json.resultsPage.results.artist,function(i,result){
if(i==0){
artist_url="http://api.songkick.com/api/3.0/artists/" + result.id + "/calendar.json?apikey=" + key +"&jsoncallback=?";
$.getJSON(artist_url,function(data){
$.each(data.resultsPage.results.event,function(i,event){
for (prop in event) {
if (!result.hasOwnProperty(prop)) {
continue;
}
$("#Gigs").html("<li>" + event[prop]);
}
})
})
};
});
});
});
if (result.displayName=="an_artist_name") が機能していなかったので、 if(i==0) が回避策として機能するようです。オリジナルでは、私が問題を抱えているコードは次のとおりです。
$("#songkick").append("<li>" + prop + ". " + event[prop]);
私はそれを次のように変更しました:
$("#Gigs").html("<li>" + event[prop]);
Gigs は、データを表示する要素の ID です。後続の検索ごとに前の結果をクリアしたいので、append() は必要ありませんが、コードを append() から html() に変更すると、最後の「小道具」しか取得できません。なぜですか?
append() を使用すると、Gig Name、Songkick URI、および Songkick ID を取得できますが、html() に変更すると、最後の Songkick ID のみが返されます。