javascript - 试图获取 SharePoint 页面的当前用户
问题描述
试图获取驻留在 SP 文档库中的 html 页面的用户。我尝试做与此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
解决方案
如果我们谈论的是 SharePoint OnPrem,那么您可能总是使用 _spPageContextInfo 对象,其中包含有关当前上下文的许多信息。在此对象中,您还拥有 userId 道具和 userLoginName 道具中的当前用户 ID 和登录名
推荐阅读
- docker - Rancher 机器重新启动时未显示集群
- go - 我的游戏中的圆形碰撞比图像略大
- pyspark - Jupyter Notebook 在启动时显示 No pyspark kernel
- python-3.x - 使用自然语言处理从段落中提取特定类型的单词
- apache-kafka - 无法建立到节点 -1 的连接。经纪人可能不可用。(org.apache.kafka.clients.NetworkClient)
- python - 如何在文件之间共享静态类变量?
- python - 当新用户在 JuPyter 集线器上注册/登录时,如何在启动文件夹中自动写入文件?
- amazon-web-services - 无法使用 virtual-kubelet 在 AWS Fargate 上创建 nginx 任务定义的部署
- windows - 将使用 electron-builder 创建的 appx 安装到我已安装的应用程序中后,将默认电子图标设置为
- hive - HIVE中的两个表比较