2016-06-02 5 views
0

안녕하세요 현재 사용자의 이름을 검색하고 메시지 상자에 표시하는 Content Editor Web Part에 다음 코드를 가지고 :자바 스크립트를 사용하여 사용자 속성을 검색하는 방법

<script type="text/javascript" src="//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script> 
<script language="javascript" type="text/javascript"> 

function getUser() { 
    var userid = _spPageContextInfo.userId; 
    //alert(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.Title; 
     alert(loginName); 
    } 
    function onError(error) { 
     alert("Error on retrieving current user."); 
    } 
} 


    $(document).ready(function() { 
     getUser(); 
    }); 
</script> 

가 나는 또한 함께 이메일을 표시 할 수있었습니다을 alert(data.d.Email);. 그러나

, 내가 data.d.Groups 호출 시도 (the documentation에 따라 - Groups 속성이 존재 함을 보여주는), 나는 [object Object]있는 메시지 상자를 참조하십시오.

어떻게이 개별 항목을 가져올 수 있습니까 (내가 가정하고있는 것) 컬렉션입니까?

이 나는 ​​시도했다 :

var group = data.d.Groups[0]; 
alert(group); 

그러나 이것은 단지 undefined와 함께 제공됩니다.

이 개체에 내 부서가 포함될 것이라고 생각하는데 잘못 되었습니까?

어느 쪽이든이 개체를 반복하는 방법이 있습니까? 아니면 올바르게 수행했는데 빈 배열에 있습니까?

내가 F12 콘솔 창에 위의 로그 중 하나를 볼 수있는 그룹

function onSuccess(data, request) { 
    var loginName = data.d.Title; 
    console.log(loginName); 

    var groups = data.d.Groups; 
    console.log(groups); 
} 

로깅 당신에게


시도를 감사 (인터넷 익스플로러)


시도 2 ​​- 아래의 코드를 사용하여 성공적인

로깅, 나는 이전과 동일한 결과를 얻을 수 있었다, 그러나 console.log() 호출이 실제로 일을 이번에는 (이전의 것들은하지 않았다 왜 아직 아무 생각이 없음) :

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() { 

    var groups = currentUser.get_groups(); 
    alert(groups); 
    console.log(groups); 

    var name = currentUser.get_loginName(); 
    alert(name); 
    console.log(name); 

    var id = currentUser.get_id(); 
    alert(name); 

    var title = currentUser.get_title(); 
    alert(title); 

    var email = currentUser.get_email(); 
    alert(email); 
} 

function onQueryFailed(sender, args) { 
    alert('Request failed. \nError: ' + args.get_message() + '\nStackTrace: ' + args.get_stackTrace()); 
} 

console.log(groups);를 호출 한 후에는 F12 콘솔에서 다음과 같은 내용 :

enter image description here

+0

가능한 경우 'data.d.Groups'을 (를) 콘솔에 기록하거나 피들을 만듭니다. – Rohit416

+0

수신중인 정보가 확실하지 않은 경우 먼저 json의 전체 응답을보고 원하는 정보의 위치를 ​​확인하십시오. – jmugz3

+0

또한,'groups'는 인덱스 0에 접근하려고 시도하는 배열이라고 가정했지만, 문서에서는 객체라고합니다. [link] (https://msdn.microsoft.com/en-us/library/office/jj244862.aspx) @ Rohit416에서 제안한 것을 시도해보십시오. – jmugz3

답변

관련 문제