2016-11-15 325 views
0

所以我想要做的事情很簡單。我有一個網站顯示評論,我有一個管理頁面,允許管理員刪除評論。不過,我需要在評論之前將其隱藏。只能使用匹配鍵獲取json對象

這個腳本抓住每一個對象在我的JSON文件,並將其顯示:

$.getJSON("data/comments.json", function(data) { 
    var number = []; 
    $.each(data, function(index, d) { 
     number.push("<div class='comment' id='" + index + "'>" + "<div class='comment-text'>" + d.comment + "</div>" + "<img class='comment-image' src='data/upload/" + d.img + "'>" + "<div class='comment-identifier'><span class='comment-name'>" + "– " + d.name + "</span>" + "<span class='comment-department'>" + ", " + d.department + "</span></div>" + "</div>"); 
    }); 
    $("<div/>", { 
     "id": "comment-container", 
     html: number.join("") 
    }).appendTo("#comment-layout"); 
}); 

每個JSON對象都會有一個關鍵的「批准:假」在創建適用於它。我怎樣才能讓上面的腳本只拉對象的「approved:true」對象呢?

回答

-1

您可以在$.each函數中檢查批註是否被批准。

$.each(data, function(index, d) { 
    if(d.approved){ 
     number.push("<div class='comment' id='" + index + "'>" + "<div class='comment-text'>" + d.comment + "</div>" + "<img class='comment-image' src='data/upload/" + d.img + "'>" + "<div class='comment-identifier'><span class='comment-name'>" + "– " + d.name + "</span>" + "<span class='comment-department'>" + ", " + d.department + "</span></div>" + "</div>"); 
    } 
}); 
+0

啊,本來看似簡單,不知道我是否需要$ .grep或什麼。我會試試這個。謝謝。 – Aeromax

+1

確保'd.approved'存儲爲布爾值而不是字符串(在這種情況下使用'd.approved ==「true」')。同樣如@EoiFirst所說,數據仍然可以在客戶端使用,並且可以使用開發者工具(或類似的工具)進行檢查 –

+0

是的,我並不擔心有人在旁邊看到它,這是一個內部項目,大多數人不會我不知道如何或照顧這麼做。如果評論被拒登,無論如何它都會從服務器端數據文件中刪除。 – Aeromax

0

您可以在將它推送到陣列之前檢查它是否被批准。儘管如此,它並不妨礙數據被客戶端接收。

$.getJSON("data/comments.json", function(data) { 
    var number = []; 
    $.each(data, function(index, d) { 

     if (d.approved == false) 
      continue; 

     number.push("<div class='comment' id='" + index + "'>" + "<div class='comment-text'>" + d.comment + "</div>" + "<img class='comment-image' src='data/upload/" + d.img + "'>" + "<div class='comment-identifier'><span class='comment-name'>" + "– " + d.name + "</span>" + "<span class='comment-department'>" + ", " + d.department + "</span></div>" + "</div>"); 
    }); 
    $("<div/>", { 
     "id": "comment-container", 
     html: number.join("") 
    }).appendTo("#comment-layout"); 
}); 

如果你不希望數據在客戶端到達,你應該過濾你的數據服務器端,並使用$阿賈克斯,而不是$ .getJSON:

$.ajax({ 
    url: 'routeToYourFilterFunction', 
    success: function(data){ 
     number.push(); 
    } 
});