我在这里遇到一点麻烦。我需要返回SharePoint中当前登录的用户。我期待James Ward
,而不是i:0#.f|membership|jamesw@gmail.com
到目前为止,这是我在母版页中使用的代码。
<script type="text/javascript">
ExecuteOrDelayUntilScriptLoaded(init,'sp.js');
var currentUser;
function init(){
this.clientContext = new SP.ClientContext.get_current();
this.oWeb = clientContext.get_web();
currentUser = this.oWeb.get_currentUser();
this.clientContext.load(currentUser);
this.clientContext.executeQueryAsync(Function.createDelegate(this,this.onQuerySucceeded), Function.createDelegate(this,this.onQueryFailed));
}
function onQuerySucceeded() {
document.getElementById('userLoginName').innerHTML = currentUser.get_loginName();
document.getElementById('userId').innerHTML = currentUser.get_id();
document.getElementById('userTitle').innerHTML = currentUser.get_title();
document.getElementById('userEmail').innerHTML = currentUser.get_email();
}
function onQueryFailed(sender, args) {
alert('Request failed. \nError: ' + args.get_message() + '\nStackTrace: ' + args.get_stackTrace());
}
</script>
我用这行代码在主页上显示返回值:
<span>Welcome to My Page,<span id="userLoginName"></span></span>
不幸的是,userLoginName
会返回此信息:i:0#.f|membership|jamesw@gmail.com
如何返回James Ward
而不是i:0#.f|membership|jamesw@gmail.com
?
提前致谢!
答案 0 :(得分:0)
尝试使用currentUser.get_title()
代替currentUser.get_loginName();
。
document.getElementById('userLoginName').innerHTML = currentUser.get_title();
当然它可能会有点误导,因为span有id&#39; userLoginName&#39;并且您正在显示用户标题。也许您应该考虑将范围的ID更改为&#39; userTitle&#39;。我可以看到你有另一个带有这个id的跨度,你实际上将它设置为currentUser.get_title()。因此,交换userLoginName
span和userTitle
span的位置可能是个好主意。
<span>Welcome to My Page,<span id="userTitle"></span></span>
答案 1 :(得分:0)
使用SP.User.get_title()
属性检索用户名,例如:
var userName = user.get_title();
CSOM
function getCurrentUser(success, failure) {
var ctx = SP.ClientContext.get_current();
var user = ctx.get_web().get_currentUser();
ctx.load(user);
ctx.executeQueryAsync(
function () {
success(user);
},
failure
);
}
用法
ExecuteOrDelayUntilScriptLoaded(function(){
getCurrentUser(
function(user){
document.getElementById('userLoginName').innerHTML = user.get_title();
},
function(sender,args){
console.log(args.get_message());
});
},'sp.js');
REST
function getCurrentUser(success, failure) {
$.ajax({
url: _spPageContextInfo.webAbsoluteUrl + "/_api/web/currentUser",
method: "GET",
headers: { "Accept": "application/json; odata=verbose" },
success: function (data) {
success(data.d);
},
error: function (data) {
failure(data);
}
});
}
用法
getCurrentUser(
function(user){
document.getElementById('userLoginName').innerHTML = user.Title;
},
function(error){
console.log(error.responseText);
});
答案 2 :(得分:0)
在尝试了一些替代方案后,我提出了这个解决方案:
<script src="../../Style%20Library/MyJsFolder/jquery-1.7.2.min.js"></script>
< script type = "text/javascript" >
var userid = _spPageContextInfo.userId;
var requestUri = _spPageContextInfo.webAbsoluteUrl + "/_api/web/getuserbyid(" +
userid + ")";
var requestHeaders = {
"accept": "application/json;odata=verbose"
};
$.ajax({
url: requestUri,
contentType: "application/json;odata=verbose",
headers: requestHeaders,
success: onSuccess,
error: onError
});
function onSuccess(data, request) {
var Logg = data.d;
document.getElementById('userLoginName').innerHTML = Logg.Title;
}
function onError(error) {
alert("error");
} < /script>
我们可以像这样返回显示名称:
<span id="userLoginName"></span>
我不擅长js或sharepoint(我在网上发现了这个解决方案并对其进行修改)但是我正在分享这个解决方案,所以如果我们将来遇到麻烦,我们可以参考这个。
谢谢!