【问题标题】:Trying to get current user of SharePoint Page试图获取 SharePoint 页面的当前用户
【发布时间】:2020-05-12 14:53:29
【问题描述】:

试图获取驻留在 SP 文档库中的 html 页面的用户。我尝试做与this SO 帖子中类似的事情,但未定义。如何获取当前页面上的用户?谢谢。

我试图获取当前用户的函数是 $scope.updateTicket()

下面是所有的JS代码。

var app = angular.module('myApp', []);
var reports = [];
var areports = [];
var breports = [];
app.controller('myController',
    function($scope, $http) {
        $http({
            method: 'GET',
            url: ".../_api/web/lists/GetByTitle('tickets')/items?$top=1000&$select=ID,comments,ticket_number,status,date",
            headers: {"Accept": "application/json;odata=verbose"}
        }).success(function (data, status, headers, config) {
            $scope.reports = data.d.results;

            $scope.openModal = function() {

                $getFormDigest = function() {
                    console.log("Inside getFormDigest...");
                    var formdigest;

                    jQuery.ajax({
                        url: "..._api/contextinfo",
                        type: "POST",
                        async: false,
                        headers: {
                            "accept": "application/json; odata=verbose",
                            type: "POST"
                        },
                        success: function(data)
                        {
                            formdigest = data.d.GetContextWebInformation.FormDigestValue
                        }
                    });
                    return formdigest;
                }

                $scope.updateFunc = function(itemID, new_comment) {
                    console.log('In update function...', itemID);
                    var formdigest = $scope.getFormDigest();

                    jQuery.ajax({
                        url: ".../_api/web/lists/GetByTitle('tickets')/items(" + itemID + ")",
                        type: "POST",
                        data: JSON.stringify({
                            '__metadata': { 'type': 'SP.Data.ticketsListItem' },
                        'comments': new_comment
                        }),
                        headers: {
                            "accept" : "application/json;odata=verbose",
                            "content-type": "application/json;odata=verbose",
                            "X-RequestDigest": formdigest,
                            "IF-MATCH": "*",
                            "X-HTTP-Method": "MERGE"
                        },
                        success: function(data)
                        {
                            console.log("comments updated successfully...");
                        },
                        error: function(data)
                        {
                            console.log($("#__REQUESTDIGEST").val());
                            console.log("Error message: " + JSON.stringify(dta.responseJSON.error));
                        }
                    });
                }

                $scope.updateTicket = function() {
                    jQuery.ajax({
                        url: ".../_api/web/currentuser?select=Title",
                        type: "GET",
                        success: function(data)
                        {
                            var title = data.d.Title;
                            console.log(title);
                        },
                        error: function(data) {
                            console.log("Error occurred trying to get user Title");
                        }
                    });

                    var submitter = document.getElementById("submitter");
                    var context = SP.ClientContext.get_current();
                    var web = context.get_web();
                    var user = context.get_web().get_currentUser();
                    context.load(user);
                    console.log("User: " + web.get_currentUser().$5_0.$H_0.Title);
                    //var submitter = web.get_currentUser().$5_0.$H_0.Title;
                    var now = new Date();
                    var timestamp = (now.getUTCMonth() + 1 + "/" + now.getUTCDate() + "/" + now.getFullYear() + " " + ("0" + now.getUTCHours()).slice(-2) + ":" ("0" + now.getUTCMinutes()).slice(-2));
                    var temp = document.getElementById('comments').innerHTML;
                    temp += '<br>' + timestamp + ' -- ' + submitter + '<br>' + document.getElementById('comment-field').value + '<br>';
                    document.getElementById('comments').innerHTML = '<br>' + temp + '<br>';

                    $scope.updateFunc(document.getElementById('id').innerHTML, temp);
                    document.getElementById('comment-field').value = '';
                    document.getElementById('myModal').style.display = 'none';
                    location.reload();
                };

                modal.display = "block";

            };

        }).error(function(data, status, headers, config) {
            console.log("an error occurred...");
        });

        var modal = document.getElementById('myModal');
        var span = document.getElementByClassName("close")[0];
        span.onclick = function() {
            modal.style.display = "none";
        }
        window.onclick = function(event) {
            if(event.target == modal) {
                modal.style.display = "none";
            }
        }

    });

在我的 HTML 文件的头部,我引入了以下 SP 库

init.js
MicrosoftAjax.js
sp.core.js
sp.runtime.js
sp.js

【问题讨论】:

标签: javascript sharepoint sharepoint-2013


【解决方案1】:

如果我们谈论的是 SharePoint OnPrem,那么您可能总是使用 _spPageContextInfo 对象,其中包含许多有关当前上下文的信息。在此对象中,您还拥有当前用户 ID 和登录 userId 道具和 userLoginName 道具

【讨论】:

    【解决方案2】:

    是的 _spPageContextInfo.userDisplayName 就是你所需要的:

    • _spPageContextInfo.userDisplayName
    • _spPageContextInfo.userEmail
    • _spPageContextInfo.userId
    • _spPageContextInfo.isSiteAdmin

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-11-15
      • 2014-01-25
      • 2011-05-07
      • 2015-02-26
      • 1970-01-01
      • 2012-12-04
      相关资源
      最近更新 更多