Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/73.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2012/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 过滤JSON键值并为呈现的元素指定名称_Javascript_Jquery_Json_Ajax - Fatal编程技术网

Javascript 过滤JSON键值并为呈现的元素指定名称

Javascript 过滤JSON键值并为呈现的元素指定名称,javascript,jquery,json,ajax,Javascript,Jquery,Json,Ajax,如果这是重复的,我很抱歉,我在任何地方都找不到这个案子 我有一个到ldap服务器的ajax调用,它返回一个JSON对象,如下所示: {组: [{dn:cn=test,ou=security,ou=groups,dc=company,dc=com,isDynamicGroup:true}] 在回答中,这就是我所看到的 {dn: "cn=test,ou=security,ou=groups,dc=company,dc=com", isDynamicGroup: true} dn: "cn=test

如果这是重复的,我很抱歉,我在任何地方都找不到这个案子

我有一个到ldap服务器的ajax调用,它返回一个JSON对象,如下所示: {组: [{dn:cn=test,ou=security,ou=groups,dc=company,dc=com,isDynamicGroup:true}] 在回答中,这就是我所看到的

{dn: "cn=test,ou=security,ou=groups,dc=company,dc=com", 
isDynamicGroup: true}
dn: "cn=test,ou=security,ou=groups,dc=company,dc=com"
isDynamicGroup: true
我能够很好地填充DOM元素并设置前端的样式,这样用户就可以单击组并加载成员。但是,我试图做的是过滤掉isDynamicGroup:false并为那些匹配单独ID/类的元素设置样式。主要是为了让用户知道他们无法发送数据包

这是ajax中的组调用

//Display groups
$(function displayGroupItems() {
  $(document).on('click', '#ldap-tab', function(event) {
    $.ajax({
        url: 'ldap/groups',
        method: 'GET',
        dataType: 'json',
        success: function(data) {
            $.each(data.groups, function(i, dn) {
                $('<li><a id="groupsList" class="panel-block dn-class">' + dn.dn + '</a></li>').appendTo('#groupSearchUl');
            });
        }
    })
  });
});
现在,对象渲染

<div class="groupsList">
 <ul class="groupSearchUl">
  <li><a id="groupsList" class="panel-block dn-class">groupName</a> 
  </li>
 </ul>
 </div>
我想看看

<div class="groupsList">
 <ul class="groupSearchUl">
  <li><a id="groupsList dynamicgroup" class="panel-block dn- 
   class">groupName</a> 
  </li>
 </ul>
 </div>

如果我理解用以下内容替换您的成功回调,您应该会得到您想要的

$.each(data.groups, function(i, dn) { $('<li><a id="groupsList" class="panel-block ' + (dn.isDynamicGroup ? 'dynamic-group' : '') + ' dn-class">' + dn.dn + '</a></li>').appendTo('#groupSearchUl'); });

如果链接是动态组,则该链接将具有动态组类。

要筛选出isDynamicGroup设置为false的组,可以使用:

var dynamicGroups = data.groups.filter(group => group.isDynamicGroup);
如果只想将类分配给isDynamicGroup属性设置为true的组,则可以使用类似的方法:

$(function displayGroupItems() {
    $(document).on('click', '#ldap-tab', function(event) {
        $.ajax({
            url: 'ldap/groups',
            method: 'GET',
            dataType: 'json',
            success: function(data) {
                data.groups.forEach(function(group) {
                    var groupClass = "groupsList panel-block dn-class";
                    if (group.isDynamicGroup) {
                        groupClass += " dynamic-group";
                    }
                    $('<li><a class="' + groupClass + '">' + group.dn + '</a></li>').appendTo('#groupSearchUl');
                 });
            })
       });
 });

我看到ID将被重复。另外,由于您的data.groups是一个javascript数组,因此在简单数组中使用$。每个都是多余的。工作起来很有魅力。谢谢。