2016-11-15 9 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オブジェクトは、のキーを持っています「承認:偽」作成時にそれに適用されます。上記のスクリプトにオブジェクトを「承認済み: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によると、データは依然としてクライアント側で利用可能であり、Developer Tools(または同様のもの)を使用して検査される可能性があります –

+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(); 
    } 
}); 
関連する問題