2010-02-23 96 views
2

我想通過AJAX過濾JSON數組,並不知道如何做到這一點。「過濾器」JSON通過Ajax(jQuery)

{ posts: [{"image":"images/bbtv.jpg", "group":"a"}, {"image":"images/grow.jpg", "group":"b"}, {"image":"images/tabs.jpg", "group":"a"}, {"image":"images/bia.jpg", "group":"b"}]} 

我想它,這樣我可以只顯示在A組或項目組B.

如何將我不得不改變我的AJAX通過內容過濾?

$.ajax({ 
type: "GET", 
url: "category/all.js", 
dataType: "json", 
cache: false, 
contentType: "application/json", 
success: function(data) { 
$('#folio').html("<ul/>"); 
$.each(data.posts, function(i,post){ 
    $('#folio ul').append('<li><div class="boxgrid captionfull"><img src="' + post.image + '" /></div></li>'); 
}); 

initBinding(); 
}, 
error: function(xhr, status, error) { 
    alert(xhr.status); 
} 

});

此外,我怎樣才能使每個鏈接過程的過濾器?

<a href="category/all.js">Group A</a> <a href="category/all.js">Group B</a> 

對不起,所有這些問題,似乎無法找到解決辦法.. 在正確的方向任何幫助,將不勝感激。

謝謝!

回答

0

你需要寫一個過濾功能,更可能:

function filterGroup(obj, filteredGroup) { 
    var resultObj = $.extend({},obj); 

    for (var i in obj) { 
    if (obj.hasOwnProperty(i)) { 
     if (obj[i].group && obj[i].group !== filteredGroup) { 
     delete resultObj[i]; 
     } 
    } 
    } 
    return resultObj; 
} 

然後你只是通過過濾器運行數據。你也可能想用這樣的一堆JSON切換到POST。

$.ajax({ 
    type: "POST", 
    url: "category/all.js", 
    dataType: "json", 
    cache: false, 
    data: {"posts": filterGroup(posts, 'a')}, 
    contentType: "application/json", 
    success: function(data) { 
    $('#folio').html("<ul/>"); 
    $.each(data.posts, function(i,post){ 
     $('#folio ul').append('<li><div class="boxgrid captionfull"><img src="' + 
          post.image + '" /></div></li>'); 
    }); 
    } 
}); 

這段代碼大部分是假設的,因爲我不知道你在做什麼,但它應該讓你接近。只是不要指望能夠複製/粘貼它。這假設你實際上將你的數據變量命名爲posts

要創建鏈接運行代碼,您需要附加點擊處理程序並確定每個鏈接。我假設你添加一個類名到每個(filterA和filterB):

$('.filterA').click(function(){ 
    filterGroup(someDataObject, 'a'); 
    return false; 
}); 
$('.filterB').click(function(){ 
    filterGroup(someDataObject, 'b'); 
    return false; 
}); 
+0

您的代碼從原來的對象刪除的財產,我想你想使用'resultObj'即刪除循環內,濾波''a''到''b''和後面會導致一個空的'someDataObject'與當前代碼。 – 2010-05-09 23:52:43

+0

感謝尼克,修好了。 Twas只是一個疏忽。 – 2010-05-10 00:27:17