SP.ClientContext 在 SharePoint Online 中未定义
SP.ClientContext is undefined in SharePoint online
我正在尝试通过 SharePoint online 中的 JSOM 获取登录用户的详细信息。
下面是我正在尝试的代码:
SP.SOD.registerSod('sp.js', "/_layouts/15/sp.js");
SP.SOD.executeFunc('sp.js', 'SP.ClientContext', getCurrentUser);
function getCurrentUser() {
try {
var clientContext = new SP.ClientContext.get_current();
var tempcurrentUser = clientContext.get_web().get_currentUser();
clientContext.load(tempcurrentUser);
clientContext.executeQueryAsync(function () {
prf.loggedUser = tempcurrentUser.get_id();
var userAcc = tempcurrentUser.get_loginName();
}, queryFailure);
}
catch (err) {
queryFailure();
}
}
function queryFailure() {
alert('Error while accessing Active Directory');
}
在上面的代码中,当我尝试访问 SP.ClientContext.get_current() 时,出现错误 SP.ClientContext 未定义。
我是 SharePoint online 的新手,这个问题听起来很简单,但我愿意学习。
注意:以上代码在 SharePoint 2013 中运行良好。
而不是使用 SP.SOD.executeFunc 尝试使用
‘executeOrDelayUntilScriptLoaded’
在 SharePoint Online 中,我建议您使用 REST API 和 jQuery Ajax 来实现它。
<script src="https://code.jquery.com/jquery-1.12.4.min.js" type="text/javascript"></script>
<script type="text/javascript">
$(function(){
$.ajax({
url: _spPageContextInfo.webAbsoluteUrl + "/_api/web/CurrentUser",
method: "GET",
headers: { "Accept": "application/json; odata=verbose"},
async:false,
success: function (data) {
var userId=data.d.Id;
var loginName=data.d.LoginName;
alert("UserId:"+userId+" LoginName:"+loginName);
},
error: function (err) {
console.log(err);
}
});
});
</script>
如果您想获取当前用户的个人资料信息,我们可以使用下面的 REST API。
https://siteurl/_api/SP.UserProfiles.PeopleManager/GetMyProperties
参考:SharePoint 2013: Get UserProfile Properties with REST API
在SharePoint Online中获取用户信息,无需编写代码。您可以使用
Microsoft 提供的现有 _spPageContextInfo。
代码输出:
我正在尝试通过 SharePoint online 中的 JSOM 获取登录用户的详细信息。
下面是我正在尝试的代码:
SP.SOD.registerSod('sp.js', "/_layouts/15/sp.js");
SP.SOD.executeFunc('sp.js', 'SP.ClientContext', getCurrentUser);
function getCurrentUser() {
try {
var clientContext = new SP.ClientContext.get_current();
var tempcurrentUser = clientContext.get_web().get_currentUser();
clientContext.load(tempcurrentUser);
clientContext.executeQueryAsync(function () {
prf.loggedUser = tempcurrentUser.get_id();
var userAcc = tempcurrentUser.get_loginName();
}, queryFailure);
}
catch (err) {
queryFailure();
}
}
function queryFailure() {
alert('Error while accessing Active Directory');
}
在上面的代码中,当我尝试访问 SP.ClientContext.get_current() 时,出现错误 SP.ClientContext 未定义。
我是 SharePoint online 的新手,这个问题听起来很简单,但我愿意学习。
注意:以上代码在 SharePoint 2013 中运行良好。
而不是使用 SP.SOD.executeFunc 尝试使用
‘executeOrDelayUntilScriptLoaded’
在 SharePoint Online 中,我建议您使用 REST API 和 jQuery Ajax 来实现它。
<script src="https://code.jquery.com/jquery-1.12.4.min.js" type="text/javascript"></script>
<script type="text/javascript">
$(function(){
$.ajax({
url: _spPageContextInfo.webAbsoluteUrl + "/_api/web/CurrentUser",
method: "GET",
headers: { "Accept": "application/json; odata=verbose"},
async:false,
success: function (data) {
var userId=data.d.Id;
var loginName=data.d.LoginName;
alert("UserId:"+userId+" LoginName:"+loginName);
},
error: function (err) {
console.log(err);
}
});
});
</script>
如果您想获取当前用户的个人资料信息,我们可以使用下面的 REST API。
https://siteurl/_api/SP.UserProfiles.PeopleManager/GetMyProperties
参考:SharePoint 2013: Get UserProfile Properties with REST API
在SharePoint Online中获取用户信息,无需编写代码。您可以使用 Microsoft 提供的现有 _spPageContextInfo。
代码输出: