只能使用匹配键获取json对象
问题描述:
所以我想要做的事情很简单。我有一个网站显示评论,我有一个管理页面,允许管理员删除评论。不过,我需要在评论之前将其隐藏。只能使用匹配键获取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”对象呢?
答
您可以在$.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>");
}
});
答
您可以在将它推送到阵列之前检查它是否被批准。尽管如此,它并不妨碍数据被客户端接收。
$.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();
}
});
啊,本来看似简单,不知道我是否需要$ .grep或什么。我会试试这个。谢谢。 – Aeromax
确保'd.approved'存储为布尔值而不是字符串(在这种情况下使用'd.approved ==“true”')。同样如@EoiFirst所说,数据仍然可以在客户端使用,并且可以使用开发者工具(或类似的工具)进行检查 –
是的,我并不担心有人在旁边看到它,这是一个内部项目,大多数人不会我不知道如何或照顾这么做。如果评论被拒登,无论如何它都会从服务器端数据文件中删除。 – Aeromax