过滤JSON键值并将名称分配给渲染的元素

时间:2018-08-27 19:06:15

标签: javascript jquery json ajax

如果这是重复的邮件,我很抱歉,我在任何地方都找不到这种情况。

我有一个ajax调用转到我们的ldap服务器,该服务器返回这样的JSON对象: {groups: [{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>

2 个答案:

答案 0 :(得分:1)

要过滤掉isDynamicGroup设置为false的组,可以使用:

target

如果只想将一个类分配给isDynamicGroup属性设置为true的组,则可以使用类似的方法:

var myObject = myObject || {};
myObject = {
  d: {
    get: function(list, id) {
      // do stuff
    }
  },

  // Use this to duplicate shared funtions for similar
  spec: function(target) {
    return {
      data: [],
      list: target,

      get: function() {
        myObject.d.get(a, b);
      },
      update: "",
      delete: ""
    };
  }

};

// some how return `myObject.spec.get()`, allowing me to use myObject.d.prop1.get()
myObject.prop1 = myObject.spec("prop1");
myObject.prop2 = myObject.spec("prop2");

答案 1 :(得分:0)

如果我理解为将成功回调替换为以下内容,那么您应该会得到想要的东西。

$.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'); });

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