0

SharePointSitePageで現在ログインしているユーザーのフルネームを取得できます。ただし、その直後にフルネームを使用して何かをする必要があります。残念ながら、期待どおりに機能していません。

これがコードです

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

今考えているのは、PASSWORD()の後にalert(currentUser)を呼び出しているので、現在ログインしているユーザーの名前を取得するのですが、空の文字列が表示されるため、そうではありません。基本的にalert(currentUser)はPASSWORD()の前に呼び出されます。

任意のアイデア/提案は大歓迎です。

4

1 に答える 1

0

シェアポイントが何であるか(私が覚えているように見えるいくつかの古代のマイクロソフトプラットフォーム)はわかりませんが、問題が何であるかをあなたに伝えることができると思います。

PASSWORDは非同期アクションを実行します。つまり、最初は多くのことを実行せず、PASSWORD関数がトリガーされる前にアラートがトリガーされます。したがって、おそらく必要なのは、次のようなものです。

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());
}
于 2012-07-06T17:44:20.847 に答える