2012-11-29 33 views
1

我使用ajax和json渲染頁面。我的json的結構是{"status":"ok","rewards":[{"id":201,"points":500},{"id":202,"points":500}] 如何使ajax只加載一次數據,如果'點'重複在任何哈希值?從json渲染頁面時跳過重複的項目

E.g.我有JSON在這「點」具有相同的價值幾散列 這裏是我的代碼

$("#page").live('pagecreate', function(e) { 
     var request = $.ajax({ 
      type: "GET", 
      url: "example.com/file.json", 
      dataType: "json", 
      error: function (data, tex 

tStatus){ 
      console.log(status); 
      console.log(data);}, 
     success: function (data, textStatus){ 
     console.log("success"); 

     console.log(status); 
      console.log(data); 
     } 
     }) 
     request.success(function(data, textStatus){ 
      var lis = ""; 
      var seen = {}; 
      $.each(data.rewards, function(key, val){ 
      lis += "<div class = 'reward-ui ui-block-" + String.fromCharCode(97 + key%3) + "'><a href ='#' class ='ui-link-inherit'>" + val.points + "</a></div>"; 
      }); 
      $(".ui-grid-b").html(lis); 

      }); 
      //$('.even-odd').listview('refresh'); 
     }) 
     }); 
+0

這就是您在生成數據時在服務器上執行的操作,或者.each循環中的某些內容以記住之前顯示的內容。這與ajax本身無關。 –

+0

是的,我試着從這個問題的解決方案:http://stackoverflow.com/questions/2822962/jquery-remove-duplicate-elements,但沒有工作 –

回答

2

添加本地陣列將存儲使用的所有項目。在$ .each函數中推入該數組,並在執行lis + =「」之前檢查該值是否已存在於temp數組中。

除此之外,您可以嘗試在檢索數據之前進行服務器端排序......就像上面提到的那樣。

+0

我會用另一種方式使用這些重複。那些有重複的將被存儲在另一頁上。 –

+1

如果您需要稍後使用它以保存另一個電話,則保留數據的本地副本。 –

+0

謝謝,這幫助了我很多 –