Javascript 从SharePoint中的人员或组列表字段检索displayName和电子邮件

Javascript 从SharePoint中的人员或组列表字段检索displayName和电子邮件,javascript,sharepoint-2013,Javascript,Sharepoint 2013,我正在查询SPList并检索个人或组字段对象 我想获取DisplayName和Email属性,但我不知道如何获取它们。getter“获取电子邮件()”和“获取显示名称()”在控制台中抛出错误:“不支持的对象属性或方法” 我只需将个人或组对象直接存储在SPList中的变量中即可: var person=found.get_项(“分配的”” 如何获取person.get\u displayName()?我们可以使用字段值。get\u lookupValue()获取用户的显示名称。要获得用户的更多信息

我正在查询
SPList
并检索
个人或组
字段对象

我想获取
DisplayName
Email
属性,但我不知道如何获取它们。getter“
获取电子邮件()
”和“
获取显示名称()
”在控制台中抛出错误:
“不支持的对象属性或方法”

我只需将
个人或组
对象直接存储在
SPList
中的变量中即可:

var person=found.get_项(“分配的”


如何获取
person.get\u displayName()

我们可以使用字段值。get\u lookupValue()获取用户的显示名称。要获得用户的更多信息,我们可以使用web.ensureUser()方法

以下代码供您参考:

<script type="text/javascript">
ExecuteOrDelayUntilScriptLoaded(getItemFromList, "sp.js");
function getItemFromList(){
    var clientContext = new SP.ClientContext();
    var item = clientContext.get_web().get_lists().getByTitle("MyTasks").getItemById(1);
    clientContext.load(item);
    clientContext.executeQueryAsync(
        function(){ 
            // successfully retrieved value from list item
            var assigned = item.get_item("AssignedTo");
            if(assigned.length>0){
                var user = clientContext.get_web().ensureUser(assigned[0].get_lookupValue());
                clientContext.load(user);
                clientContext.executeQueryAsync(
                    function(){ 
                        // successfully ensured user from user name
                        var email = user.get_email();
                        var login = user.get_loginName();
                        var displayName = user.get_title();
                        alert("User LoginName: " + login + "\nUser Email: " + email + "\nUser Display Name: " + displayName);
                    },function(sender,args){ // on error
                        alert(args.get_message());
                    }
                );
            }          
        },
        function(sender,args){ // on error
            alert(args.get_message());
        }
    );
}
</script>

ExecuteOrderLayUntilScriptLoaded(getItemFromList,“sp.js”);
函数getItemFromList(){
var clientContext=new SP.clientContext();
var item=clientContext.get_web().get_lists().getByTitle(“MyTasks”).getItemById(1);
clientContext.load(项);
clientContext.executeQueryAsync(
函数(){
//已成功从列表项中检索到值
var assigned=项目。获取项目(“AssignedTo”);
如果(已分配。长度>0){
var user=clientContext.get_web().ensureUser(已分配[0]。get_lookupValue());
clientContext.load(用户);
clientContext.executeQueryAsync(
函数(){
//已成功确保从用户名中删除用户
var email=user.get_email();
var login=user.get_loginName();
var displayName=user.get_title();
警报(“用户登录名:“+login+”\n用户电子邮件:“+Email+”\n用户显示名:“+displayName”);
},函数(发送方,参数){//出错
警报(args.get_message());
}
);
}          
},
函数(发送方,参数){//出错
警报(args.get_message());
}
);
}

在SharePoint 2013中,我建议您使用REST API和jQuery Ajax来实现它。查看下面的文章:


我们可以使用fieldValue.get\u lookupValue()获取用户的显示名称。要获得用户的更多信息,我们可以使用web.ensureUser()方法

以下代码供您参考:

<script type="text/javascript">
ExecuteOrDelayUntilScriptLoaded(getItemFromList, "sp.js");
function getItemFromList(){
    var clientContext = new SP.ClientContext();
    var item = clientContext.get_web().get_lists().getByTitle("MyTasks").getItemById(1);
    clientContext.load(item);
    clientContext.executeQueryAsync(
        function(){ 
            // successfully retrieved value from list item
            var assigned = item.get_item("AssignedTo");
            if(assigned.length>0){
                var user = clientContext.get_web().ensureUser(assigned[0].get_lookupValue());
                clientContext.load(user);
                clientContext.executeQueryAsync(
                    function(){ 
                        // successfully ensured user from user name
                        var email = user.get_email();
                        var login = user.get_loginName();
                        var displayName = user.get_title();
                        alert("User LoginName: " + login + "\nUser Email: " + email + "\nUser Display Name: " + displayName);
                    },function(sender,args){ // on error
                        alert(args.get_message());
                    }
                );
            }          
        },
        function(sender,args){ // on error
            alert(args.get_message());
        }
    );
}
</script>

ExecuteOrderLayUntilScriptLoaded(getItemFromList,“sp.js”);
函数getItemFromList(){
var clientContext=new SP.clientContext();
var item=clientContext.get_web().get_lists().getByTitle(“MyTasks”).getItemById(1);
clientContext.load(项);
clientContext.executeQueryAsync(
函数(){
//已成功从列表项中检索到值
var assigned=项目。获取项目(“AssignedTo”);
如果(已分配。长度>0){
var user=clientContext.get_web().ensureUser(已分配[0]。get_lookupValue());
clientContext.load(用户);
clientContext.executeQueryAsync(
函数(){
//已成功确保从用户名中删除用户
var email=user.get_email();
var login=user.get_loginName();
var displayName=user.get_title();
警报(“用户登录名:“+login+”\n用户电子邮件:“+Email+”\n用户显示名:“+displayName”);
},函数(发送方,参数){//出错
警报(args.get_message());
}
);
}          
},
函数(发送方,参数){//出错
警报(args.get_message());
}
);
}

在SharePoint 2013中,我建议您使用REST API和jQuery Ajax来实现它。查看下面的文章:


检查此项,您无法直接获取用户详细信息,您必须使用用户ID检查此项,您无法直接获取用户详细信息,您必须使用用户ID获取。我会将您标记为正确答案,因为我在另一个地方发现了相同的内容,但它不适用于我的工作计划。。。也许网站的配置有问题,不知道……我的工作是使用Object.keys(user)并用键检索email和displayName的值:
var email=user[Object.keys[1]。我必须发出通知单,因为我需要使用提供的解决方案,而不是此解决方案。。jajaI会将你标记为正确答案,因为我在另一个地方发现了相同的东西,但它对我的工作不起作用。。。也许网站的配置有问题,不知道……我的工作是使用Object.keys(user)并用键检索email和displayName的值:
var email=user[Object.keys[1]。我必须发出通知单,因为我需要使用提供的解决方案,而不是此解决方案。。贾贾