Javascript 过滤JSON键值并为呈现的元素指定名称
如果这是重复的,我很抱歉,我在任何地方都找不到这个案子 我有一个到ldap服务器的ajax调用,它返回一个JSON对象,如下所示: {组: [{dn:cn=test,ou=security,ou=groups,dc=company,dc=com,isDynamicGroup:true}] 在回答中,这就是我所看到的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
{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数组,因此在简单数组中使用$。每个都是多余的。工作起来很有魅力。谢谢。