2012-07-06 67 views
0

我能够在SharePoint SitePage中获取当前登录用户的全名。不过,我需要在它后面使用全名,并且使用它进行操作。不幸的是,它没有按预期工作。获取SharePoint中登录用户的用户名并立即使用它

下面是代码

<script type="text/javascript"> 
    var currentUser = ""; 
    $(document).ready(function() { 
     AddItem(); 
     alert(currentUser); 
    }); 

    function AddItem() 
    { 
     var context = new SP.ClientContext.get_current(); 
     var web = context.get_web(); 
     user = context.get_web().get_currentUser(); 

     context.load(this.user); 
     context.executeQueryAsync(Function.createDelegate(this, this.onSuccessMethod), 
     Function.createDelegate(this, this.onFailureMethod)); 
    } 
    function onSuccessMethod(sender, args) { 
     currentUser = this.user.get_title(); 
     //alert(' Name:' + this.user.get_title() + '\n Login:' + this.user.get_loginName()); 
    } 
    function onFaiureMethod(sender, args) { 
     //alert('request failed ' + args.get_message() + '\n' + args.get_stackTrace()); 
    } 
</script> 

现在我想,既然我打电话警报(currentUser)的AddItem()之后,我会得到的当前登录的用户名,但它并非如此,因为它给了我空弦。基本上alert(currentUser)在AddItem()之前被调用。

任何想法/建议将不胜感激。

回答

0

我不知道什么共享点(我似乎记得一些古老的微软平台),但我认为我可以告诉你问题是什么。

AddItem执行一个异步操作,这意味着它最初不会做很多事情,并且在AddItem函数触发之前触发警报get。所以你可能会想要的东西是沿线:

var currentUser = ""; 
$(document).ready(function() { 
    AddItem(function(){ 
     alert(currentUser); 
    }); 
}); 

function AddItem(callback) 
{ 
    var context = new SP.ClientContext.get_current(); 
    var web = context.get_web(); 
    user = context.get_web().get_currentUser(); 

    context.load(this.user); 
    context.executeQueryAsync(Function.createDelegate(this, function(sender, args) { 
     currentUser = this.user.get_title(); 
     callback(); 
     //alert(' Name:' + this.user.get_title() + '\n Login:' + this.user.get_loginName()); 
    }),Function.createDelegate(this, this.onFailureMethod)); 
} 
function onFaiureMethod(sender, args) { 
    //alert('request failed ' + args.get_message() + '\n' + args.get_stackTrace()); 
} 
+0

得到一个错误,说“回调”未定义。请让我知道,如果这个错误对你来说显而易见。 我只是需要一种方法来执行异步调用后的一些代码。 – premsh 2012-07-06 18:30:34

+0

原始问题的缩进极其混乱,所以我误认为onSuccess方法处于相同的范围。 (在原始问题中也修正了缩进) – 2012-07-06 20:37:39

相关问题