代码之家  ›  专栏  ›  技术社区  ›  Cem Berk

SharePoint userProfileProperties JSOM(JavaScript对象模型)

  •  1
  • Cem Berk  · 技术社区  · 7 年前

    我得到了这个对象,一些值是空的。当我从管理层的用户配置文件中检查它时,我可以看到它的价值。我该怎么修这个?

    这是我获取对象的工作代码。
    注:我想 用户配置文件 这是我之前创造的。 我可以看到对象中的属性,但没有价值。

      $(document).ready(function(){         
        SP.SOD.executeOrDelayUntilScriptLoaded(loadUserData, 'SP.UserProfiles.js'); 
      });
    
      var userProfileProperties;
    
      function loadUserData(){
    
        //Get Current Context   
        var clientContext = new SP.ClientContext.get_current();
    
        //Get Instance of People Manager Class
        var peopleManager = new SP.UserProfiles.PeopleManager(clientContext);
    
        //Get properties of the current user
        userProfileProperties = peopleManager.getMyProperties();
    
        clientContext.load(userProfileProperties);
    
        //Execute the Query.
        clientContext.executeQueryAsync(onSuccess, onFail);
    
      }
    
      function onSuccess() {        
           console.log(userProfileProperties)    
      }
    
      function onFail(sender, args) {
           console.log("Error: " + args.get_message());
      } 
    
    2 回复  |  直到 7 年前
        1
  •  1
  •   Naveen Prasath    7 年前

    试试下面的代码,让我知道。它对我来说很好。我传递的是用户名,而不是我的帐户。这样您就可以在这里传递任何用户帐户。

        function getUserProperties(userName) {    
        var clientContext = new SP.ClientContext.get_current();
        var peopleManager = new SP.UserProfiles.PeopleManager(clientContext);
        var profilePropertyNames = ["FirstName", "LastName", "CustomProperty"]; //Have to load all the needed properties here
        var targetUser = userName.trim();
        var userProfilePropertiesForUser = new SP.UserProfiles.UserProfilePropertiesForUser(clientContext, targetUser, profilePropertyNames);
        userProfileProperties = peopleManager.getUserProfilePropertiesFor(userProfilePropertiesForUser);    
        clientContext.load(userProfilePropertiesForUser);
        clientContext.executeQueryAsync(onSuccess, onFail);
    
    }
    
    function onSuccess() {    
    // userProfileProperties result index is same as the properties loaded above
        var firstName=userProfileProperties[0]; 
        var lastName=userProfileProperties[1];
        var customprop=userProfileProperties[2];
    }
    

    如果有帮助,请将其标记为答案。

        2
  •  0
  •   Toby Speight    7 年前

    我忘了写解决方案,很抱歉。

    工作代码如下所示。

    function getUserProperties(targetUser) {
    
        var clientContext = new SP.ClientContext.get_current();
        var peopleManager = new SP.UserProfiles.PeopleManager(clientContext);
        personProperties = peopleManager.getPropertiesFor(targetUser);
        clientContext.load(personProperties);
        clientContext.executeQueryAsync(onRequestSuccess, onRequestFail);
    }
    
    function onRequestSuccess() {
            var fullName = personProperties.get_userProfileProperties()['CustomPropField'];
    }