Sharepoint 2013 Online - 在页面中显示当前用户信息

时间:2014-05-05 20:14:35

标签: javascript sharepoint sharepoint-2013

我需要获取currentUser信息,例如在页面上的特定区域(如页脚区域)加载Home.aspx页面时的电子邮件地址和/或名称。我有搜索,我发现的每个JavaScript都不起作用。 我需要在脚本编辑器或内容编辑器或XML文件中显示文本。

我发现以下JavaScript有什么问题。我在WebApp脚本编辑器中有它:

<script type=”text/javascript”>
ExecuteOrDelayUntilScriptLoaded(init,”sp.js”);
var currentUser;
 function init(){
  this.clientContext = new SP.ClientContext.get_current();
  this.oWeb = clientContext.get_web();
  currentUser = this.oWeb.get_currentUser();
  this.clientContext.load(currentUser);
  this.clientContext.executeQueryAsync(Function.createDelegate(this,this.onQuerySucceeded), Function.createDelegate(this,this.onQueryFailed));
 }

function onQuerySucceeded() {
  document.getElementById(“logUser”).innerHTML = currentUser.get_loginName(); 
 }

function onQueryFailed(sender, args) {
  alert(‘Request failed. \nError: ‘ + args.get_message() + ‘\nStackTrace: ‘ + args.get_stackTrace());
 }
< /script>
< div>Current Logged User:<label id=”logUser”></label></div>

任何人都可以帮助我吗?

1 个答案:

答案 0 :(得分:0)

由于SP.SOD.executeOrDelayUntilScriptLoaded method期望首先加载SharePoint客户端库init,因此很可能不执行sp.js方法。 请改用SP.SOD.executeFunc method,因为它支持 on demand 脚本。

SP.SOD.executeFunc('sp.js', 'SP.ClientContext',function(){  
  var context = new SP.ClientContext.get_current();
  var web = context.get_web();
  var currentUser = web.get_currentUser();
  context.load(currentUser);
  context.executeQueryAsync(
  function(){
      console.log(currentUser.get_loginName()); 
  }, 
  function(sender, args){
      console.log('Request failed. \nError: ' + args.get_message() + '\nStackTrace: ' + args.get_stackTrace());
  });
});