将JQuery从append()更改为html()时丢失JSON数据,为什么以及如何阻止它(Songkick API)?

时间:2013-06-02 13:35:27

标签: javascript jquery json api

我从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()时,我只得到最后一个“prop”,为什么会这样?

使用append(),我获得了Gig Name,Songkick URI和Songkick ID,但是当我改为html()时,它只给了我最后一个,Songkick ID。

1 个答案:

答案 0 :(得分:1)

因为您每次使用html()时都会清除html,正如您自己所说的那样。

只需使用append,但在开头使用以下内容清除html一次: if (i == 0) { $("#Gigs").html(""); ... 其余的时间使用 $("#Gigs").append("<li>" + event[prop]);
但我还要指出你应该关闭<li> - 标签