2014-09-13 44 views
0

我试图使用个别更改事件;使用Sharepoint REST API访问特定changeItem

GET * https://开头{sitecollection}/{个人/ user_name_domain_onmicrosoft_com}/_api /网络/ getchanges( '查询')/项目

参考

http://msdn.microsoft.com/en-us/data/jj246759(v=office.12).aspx

And

http://msdn.microsoft.com/en-us/library/office/jj246759(v=office.15).aspx

我无法让它工作,而且我找不到任何此调用的示例。

我在尝试类似的东西;

GET

  • 的https:// {sitecollection}/{个人/ user_name_domain_onmicrosoft_com}/_api /网络/ getchanges( '添加= TRUE,项目=真正的')/项目

  • 的https:// {sitecollection}/{个人/ user_name_domain_onmicrosoft_com}/_api /网络/ getchanges(查询= '添加= TRUE,项目=真正的')/项目

但没有运气。

FYI ::我不想通过这个调用获取更新日志。我试图获得个人更改项目。但是因为语法就像我在这些大括号中放置了一个随机查询。/getchanges(这是一个POST调用)工作正常。

对此有何帮助?

回答

2

至少有两个选项如何构建请求用于ChangeCollection端点:通过请求主体

选项1

邮政ChangeQuery

function getChanges(webUrl,queryOptions,success,failure) 
{ 
    var changeQueryPayload = { 
     'query':{ 
      '__metadata': { 'type': 'SP.ChangeQuery' }, 
     } 
    }; 
    for(var key in queryOptions) { 
     changeQueryPayload['query'][key] = queryOptions[key]; 
    } 

    $.ajax({ 
     type: "POST", 
     headers: { 
      "accept": "application/json;odata=verbose", 
      "content-type": "application/json;odata=verbose", 
      "X-RequestDigest": $("#__REQUESTDIGEST").val() 
     }, 
     data: JSON.stringify(changeQueryPayload), 
     url: webUrl + '/_api/web/getchanges', 
     success: success, 
     failure: failure 
    }); 
} 

选项2

ChangeQuery通行证经由查询串表达式:

function getChanges(webUrl,queryOptions, success,failure) 
{ 
    $.ajax({ 
     type: "POST", 
     headers: { 
      "accept": "application/json;odata=verbose", 
      "content-type": "application/json;odata=verbose", 
      "X-RequestDigest": $("#__REQUESTDIGEST").val() 
     }, 
     url: webUrl + '/_api/web/getchanges(@qry)[email protected]=' + JSON.stringify(queryOptions) + , 
     success: success, 
     failure: failure 
    }); 
} 

检索用于web更新:

var queryOptions = {"Update":true,"Web":true}; 


getChanges(_spPageContextInfo.webAbsoluteUrl,queryOptions, 
    function(result){ 
     var changes = result.d.results; 
     //print info 
     console.log('Found ' + changes.length + ' items'); 
    }, 
    function(error){ 
    console.log(JSON.stringify(error)); 
    }); 

Regardi在请求特定的更改项目时,可以从REST服务返回的结果中检索它。

+1

好吧,以便几乎总结 - >我无法获得个人更改,我收到了一组活动,从中可以得到改变。 其实我对“/ item”调用很感兴趣,我分享的链接都是关于它的,所以我想也许我可以通过执行诸如“/ getchanges(query)/ item”之类的方法来获得单个更改。 尽管我有一个工作/ getchanges调用(选项1),我正在尝试选项2,它给了我这个错误 - >“从客户端(:)检测到潜在危险的Request.Path值。” URL-> POST https:// {tenantName} -my.sharepoint.com/ {my_site}/_api/web/getchanges('{“Web”:true,“Update”:true}') – 2014-09-14 08:15:26

+0

没错,似乎没有可能得到个人的改变。 – 2014-09-14 16:37:16

0

有一个例子: http://msdn.microsoft.com/en-us/library/office/dn499819(v=office.15).aspx

executor.executeAsync({ 
    url: "<app web url>/_api/SP.AppContextSite(@target)/web/[email protected]='<host web url>'", 
    method: "POST", 
    body: "{ 'query': { '__metadata': { 'type': 'SP.ChangeQuery' }, 'Web': true, 'Update': true } }", 
    headers: { 
    "accept": "application/json;odata=verbose", 
    "content-type": "application/json;odata=verbose" 
    }, 
    success: successHandler, 
    error: errorHandler 
}); 
+0

我已更新我的问题。这是一个差异调用(POST调用),它适用于我。我对单个项目(ChangeItem)感兴趣,因为您可以在我尝试的通话结束时看到/ item。 – 2014-09-13 13:13:06

+0

@SyedMauzeRehan您是否能够获得个人物品?你是如何解决这个问题的。我有一个类似的问题,我需要知道SP.ChangeItem的详细信息 – objectone 2015-02-27 18:05:21

+0

我能够获得单个项目,但不会返回我想要的所有数据_api/web/Lists/getbytitle('Documents' )/ items?$ filter = Id eq 48 – objectone 2015-02-27 20:11:46

0

请参考https://msdn.microsoft.com/en-us/library/office/dn499819.aspx

以下代码正在为我工​​作。

$.ajax({ 
    url: _spPageContextInfo.webAbsoluteUrl + "/_api/web/getchanges", 
    type: "POST", 
    data: "{ 'query': { '__metadata': { 'type': 'SP.ChangeQuery' },'Web': true, 'Update': true, 'Add': true } }", 
    headers: { "accept": "application/json;odata=verbose", "content-type": "application/json;odata=verbose",'X-RequestDigest':$('#__REQUESTDIGEST').val() }, 
    success: successHandler, 
    error: errorHandler 
}); 

function successHandler(data, textStatus, jqXHR){ 
    alert("successHandler " + "textstatus:" +textStatus + "data: " + data); 
} 

function errorHandler(xhr, ajaxOptions, thrownError) { 
    alert('Request failed: ' + xhr.status + '\n' + thrownError + '\n' + xhr.responseText); 
}