Javascript 获取SharePoint中登录用户的用户名并立即使用

Javascript 获取SharePoint中登录用户的用户名并立即使用,javascript,sharepoint,com,Javascript,Sharepoint,Com,我能够在SharePoint SitePage中获取当前登录用户的全名。但是,我需要在它后面使用全名,并用它做一些事情。不幸的是,它没有按预期工作 这是密码 <script type="text/javascript"> var currentUser = ""; $(document).ready(function() { AddItem(); alert(currentUser); }); function Ad

我能够在SharePoint SitePage中获取当前登录用户的全名。但是,我需要在它后面使用全名,并用它做一些事情。不幸的是,它没有按预期工作

这是密码

<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>

var currentUser=“”;
$(文档).ready(函数(){
AddItem();
警报(当前用户);
});
函数AddItem()
{
var context=new SP.ClientContext.get_current();
var web=context.get_web();
user=context.get_web().get_currentUser();
加载(this.user);
context.executeQueryAsync(Function.createDelegate(this,this.onSuccessMethod),
Function.createDelegate(this,this.onFailureMethod));
}
函数onSuccessMethod(发送方,参数){
currentUser=this.user.get_title();
//警报('Name:'+this.user.get_title()+'\n登录名:'+this.user.get_loginName());
}
函数onFaiureMethod(发送方,参数){
//警报('请求失败'+args.get_message()+'\n'+args.get_stackTrace());
}
现在我在想,因为我在AddItem()之后调用alert(currentUser),我会得到当前登录用户的名称,但事实并非如此,因为它给了我空字符串。基本上,在AddItem()之前调用了alert(currentUser)


如有任何想法/建议,将不胜感激

我不知道sharepoint是什么(我似乎还记得一些古老的microsoft平台),但我想我可以告诉你问题出在哪里

AddItem执行异步操作,这意味着它最初不会执行很多操作,并且会在AddItem函数触发之前触发警报。因此,您可能想要的是以下内容:

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());
}

出现错误,表示未定义“回调”。如果你觉得这个错误很明显,请告诉我。我只需要在异步调用后执行一些代码。原始问题的缩进非常混乱,因此我误认为onSuccessmethod在同一范围内。(也修复了原始问题中的缩进)