Find current SharePoint user with Javascript code - Stack Overflow

HyI need to find the current user from my SharePoint. I have tried many things :SP.Utilities.Principal

Hy

I need to find the current user from my SharePoint. I have tried many things :

  • SP.Utilities.PrincipalInfo.get_loginName()
  • _spPageContextInfo.userId
  • ...

At all times, I have the same result Undefined =(

Hy

I need to find the current user from my SharePoint. I have tried many things :

  • SP.Utilities.PrincipalInfo.get_loginName()
  • _spPageContextInfo.userId
  • ...

At all times, I have the same result Undefined =(

Share Improve this question asked Jul 21, 2014 at 7:43 Samuel_Samuel_ 1773 silver badges16 bronze badges 3
  • 1 Please refer to the following post [sharepoint.stackexchange./questions/44499/… – Mokhtar Bepari Commented Jul 21, 2014 at 7:49
  • This code doesn't work web.get_currentUser();. I have already the same result Undefined ... – Samuel_ Commented Jul 21, 2014 at 8:41
  • so if you go into chrome on your site, open the dev tools, and type in _spUserId or _spPageContextInfo.userId you get Undefined? If you have values when you do that in the javascript console then Vadim's answer should work -- if you still have Undefined then there is something else wrong with your page that is causing the JS not to execute properly. – John-M Commented Jul 21, 2014 at 18:06
Add a ment  | 

3 Answers 3

Reset to default 4

When using CSOM API to retrieve current user object,wrap your code inside SP.SOD.executeOrDelayUntilScriptLoaded method to make sure that the specified code is executed after SharePoint JS library (sp.js) is loaded:

SP.SOD.executeOrDelayUntilScriptLoaded(function(){
   //your code goes here..
}, 'sp.js');

How to retrieve current user object using CSOM API

function getCurrentUser(success,error)
{
    var ctx = SP.ClientContext.get_current();
    var web = ctx.get_web();
    var currentUser = web.get_currentUser();
    ctx.load(currentUser);
    ctx.executeQueryAsync(function(){
        success(currentUser);
    },
    error);
}

Usage

SP.SOD.executeOrDelayUntilScriptLoaded(function(){
  getCurrentUser(
    function(currentUser){
      console.log(currentUser.get_loginName());
    },
    function(sender, args)
    {
      console.log('Request failed ' + args.get_message() + ':'+ args.get_stackTrace());
    }); 
}, 'sp.js');

The answer is probably here. The only thing i changed is getting LoginName instead of Title:

https://stackoverflow./a/21002895/1680288

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 loginName = data.d.LoginName;
    alert(loginName);
}

function onError(error) {
    alert("error");
}

If you are getting undefined.. Maybe you are not authenticated or did not include some relevant javascript files in your master page.

Without jquery:

var userid= _spPageContextInfo.userId;
var requestUri = _spPageContextInfo.webAbsoluteUrl + "/_api/web/getuserbyid(" + userid + ")";


function createXMLHttp() {
  //If XMLHttpRequest is available then using it
  if (typeof XMLHttpRequest !== undefined) {
    return new XMLHttpRequest;
  //if window.ActiveXObject is available than the user is using IE...so we have to create the newest version XMLHttp object
  } else if (window.ActiveXObject) {
    var ieXMLHttpVersions = ['MSXML2.XMLHttp.5.0', 'MSXML2.XMLHttp.4.0', 'MSXML2.XMLHttp.3.0', 'MSXML2.XMLHttp', 'Microsoft.XMLHttp'],
        xmlHttp;
    //In this array we are starting from the first element (newest version) and trying to create it. If there is an
    //exception thrown we are handling it (and doing nothing ^^)
    for (var i = 0; i < ieXMLHttpVersions.length; i++) {
      try {
        xmlHttp = new ActiveXObject(ieXMLHttpVersions[i]);
        return xmlHttp;
      } catch (e) {
      }
    }
  }
}   

function getData() {
  var xmlHttp = createXMLHttp();
  xmlHttp.open('get', requestUri , true);
  xmlHttp.setRequestHeader("Content-Type", "application/json;odata=verbose");     
  xmlHttp.setRequestHeader("accept", "application/json;odata=verbose");   
  xmlHttp.send(null);
  xmlHttp.onreadystatechange = function() {
    if (xmlHttp.readyState === 4) {
      if (xmlHttp.status === 200) {
        var data = JSON.parse(xmlHttp.responseText);
        var loginName = data.d.LoginName;
        alert(loginName);

      } else {
      }
    } else {
      //still processing
    }
  };
}   

getData();

发布者:admin,转转请注明出处:http://www.yc00.com/questions/1745146173a4613657.html

相关推荐

  • Find current SharePoint user with Javascript code - Stack Overflow

    HyI need to find the current user from my SharePoint. I have tried many things :SP.Utilities.Principal

    1小时前
    20

发表回复

评论列表(0条)

  • 暂无评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信