我想我发现了另一个SP错误...但也许我做错了什么。 我有这个 POST 请求:
https://dmsdev/coll/f7c592adcb4c4e5996c2de00d444a94c/_api/Web/Lists/GetByTitle('1')/GetItems?$expand=ContentType&$select=Id,SonarDocId,ContentTypeId,EncodedAbsURL,Modified,ContentType/Name
带机身:
{"query":{"ViewXml":"<View><Query><OrderBy><FieldRef Name='Modified'/></OrderBy></Query><RowLimit>50</RowLimit></View>","ListItemCollectionPosition":{"PagingInfo":"Paged=TRUE&p_Modified=2017-08-10T07:25:28"}}}
如您所见,我使用 ORDER BY 修改 列进行 CAML 查询,我想从具有一些修改日期的项目之后的项目开始获取项目,但看起来这不起作用......我的意思是在其他SP环境中的类似请求有效,而在另一个环境中它不起作用...它通过修改订购后从第一个开始的所有项目...我不知道出了什么问题:/
你可以检查我的示例测试脚本。
<script type="text/javascript">
function restCallwithCaml(listName, caml,PID) {
/// get the site url
var siteUrl = _spPageContextInfo.siteAbsoluteUrl;
/// set request data
var data = {
"query": {
"__metadata":
{ "type": "SP.CamlQuery" },
"ViewXml": caml,
"ListItemCollectionPosition": {
"PagingInfo": "Paged=TRUE&p_ID=" + PID
}
}
};
/// make an ajax call
return $.ajax({
url: siteUrl + "/_api/web/lists/GetByTitle('" + listName + "')/GetItems",
method: "POST",
data: JSON.stringify(data),
headers: {
"X-RequestDigest": $("#__REQUESTDIGEST").val(),
'content-type': 'application/json;odata=verbose',
'accept': 'application/json;odata=verbose'
}
});
}
function GetItemsPaging() {
var pageLimit = 2;
var pageNumber = 0;
var caml = "<View><Query><Where><Geq><FieldRef Name='ID'/><Value Type='Number'>1</Value></Geq></Where></Query><RowLimit>" + pageLimit + "</RowLimit></View>";
var listName = "ChildB";
restCallwithCaml(listName, caml, pageNumber).done(function (data) {
if (data.d.results.length == pageLimit) {
pageNumber++;
//add to array or display
var PID=data.d.results[data.d.results.length - 1].Id;
alert(PID);
restCallwithCaml(listName, caml, PID).done(function (data) {
//add to array or display
alert(data.d.results[data.d.results.length - 1].Id);
})
}
});
}
</script>
原始线程
问题在于我对整个事情如何运作的理解+时区 我不得不写一个分页查询,例如:
Paged=TRUE&p_ID=10&p_Modified=2018-12-14T18:52:00
所以我不得不从上一页的最后一项中添加p_Modified参数......此外,此数据必须采用 UTC,因此例如,我可以使用 CAML 返回的时间执行 get 查询
https://server/site/_api/web/RegionalSettings/TimeZone/localTimeToUTC(@date)?@date='2018-12-14T11:52:00'
此调用返回的日期应以p_Modified传递。