使用javascript(ecmascript)获取列表的用户/组权限

使用javascript(ecmascript)获取列表的用户/组权限,javascript,sharepoint,sharepoint-2010,csom,Javascript,Sharepoint,Sharepoint 2010,Csom,我试图使用javascript对象模型检索列表的用户/组列表及其在列表级别的权限。到目前为止,我有这个返回一个成员对象,但我不能得到任何有关成员的信息。当我尝试使用rAssignment.get_member().get_id()或rAssignment.get_member().get_title()时,我得到一个错误 //Get List Permissions function getListPerms() { var clientC

我试图使用javascript对象模型检索列表的用户/组列表及其在列表级别的权限。到目前为止,我有这个返回一个成员对象,但我不能得到任何有关成员的信息。当我尝试使用rAssignment.get_member().get_id()或rAssignment.get_member().get_title()时,我得到一个错误

        //Get List Permissions
        function getListPerms() {
            var clientContext = new SP.ClientContext();
            var siteColl = clientContext.get_site();
            var site = clientContext.get_web();
            listSecurableObject = site.get_lists().getByTitle($("[name='ListSlct']").val());
            listRoleAssignments = listSecurableObject.get_roleAssignments();
            clientContext.load(listRoleAssignments);
            clientContext.executeQueryAsync(Function.createDelegate(this, this.getListPerms_onQuerySucceeded),Function.createDelegate(this, this.getListPerms_onQueryFailed));
       }
       function getListPerms_onQuerySucceeded() {
            var listPerms="";
            listPerms += '<table border="1">';
            listPerms += '<tr>';
            listPerms += '<td align="center">ID</td>';
            listPerms += '</tr>';
            var listPermsEnumerator =  this.listRoleAssignments.getEnumerator();
            while (listPermsEnumerator.moveNext()) {
                var rAssignment = listPermsEnumerator.get_current();
                listPerms += '<tr>';
                listPerms += '<td align="center">' + rAssignment.get_member() +  '</td>';
                listPerms += '</tr>';
            }
            listPerms += '</table>';
            document.getElementById('listPermsTable').innerHTML = listPerms;
       }
       function getListPerms_onQueryFailed(sender, args) {
           alert('Request failed. ' + args.get_message() + '\n' + args.get_stackTrace());
       }
//获取列表权限
函数getListPerms(){
var clientContext=new SP.clientContext();
var siteColl=clientContext.get_site();
var site=clientContext.get_web();
listSecurableObject=site.get_lists().getByTitle($(“[name='ListSlct']”)val());
ListRoleAsignments=listSecurableObject.get_RoleAsignments();
加载(listRoleAssignments);
clientContext.executeQueryAsync(Function.createDelegate(this,this.getListPerms_onQuerySucceed),Function.createDelegate(this,this.getListPerms_onQueryFailed));
}
函数getListPerms\u onQuerySucceed(){
var listPerms=“”;
listPerms+='';
listPerms+='';
listPerms+='ID';
listPerms+='';
var listPermsEnumerator=this.ListRoleAsignments.getEnumerator();
while(listPermsEnumerator.moveNext()){
var rasignment=listPermsEnumerator.get_current();
listPerms+='';
listPerms+=''+rasignment.get_member()+'';
listPerms+='';
}
listPerms+='';
document.getElementById('listPermsTable')。innerHTML=listPerms;
}
函数getListPerms\u onQueryFailed(发送方,参数){
警报('请求失败。'+args.get_message()+'\n'+args.get_stackTrace());
}

尝试更改clientContext.load()函数调用,如下所示:

clientContext.load(listSecurableObject, 'Include(RoleAssignments, RoleAssignments.Include(Member))');

现在,在getListPerms\u onSucceeded()方法中,您应该能够通过listSecurableObject.get\u roleAssignments()枚举,并获得与您已经执行的类似的成员(尽管您可能希望使用rAssignment.get\u member().get\u loginName())。

它返回错误信息错误:属性或字段尚未初始化。尚未请求或请求尚未执行。它可能需要显式请求。”……你在谷歌上搜索过吗?因为它给了我这个线索:是的,我尝试过显式请求ID和标题,但仍然抛出相同的错误。