我想使用POST方法中的REST API从SharePoint的“论坛”列表中在线获取“作者”字段。我尝试了下面的方法,它不起作用。
var queryUrl =
'?$select=ID,Title,Body,Author/Title,Folder/ItemCount,FieldValuesAsText/FileRef&$expand=Author,FieldValuesAsText,Folder/ItemCount';
var url =
siteUrl +
"/_api/Web/lists/GetByTitle('" +
listName +
"')/GetItems" +
queryUrl;
var camlQuery =
'<View><Query>' +
getQueryParams() +
"<OrderBy><FieldRef Name='DiscussionLastUpdated' Ascending='False'/></OrderBy></Query><RowLimit>12</RowLimit></View>";
var requestData = {
query: { __metadata: { type: 'SP.CamlQuery' }, ViewXml: camlQuery }
};
jQuery.ajax({
url: url,
method: 'POST',
data: JSON.stringify(requestData),
headers: {
'X-RequestDigest': $('#__REQUESTDIGEST').val(),
Accept: 'application/json; odata=verbose',
'Content-Type': 'application/json; odata=verbose'
},
success: function(data, status, jqXHR) {
dfd.resolve(data);
},
error: function(xhr) {
dfd.reject(xhr);
}
});
return dfd.promise();
输出如下。
答案 0 :(得分:0)
正如我在this post中所解释的那样,在通过POST查询时, $ expand 似乎不适用于某些特殊列(例如People)。最好的方法是使用Items API。
但是,如果您只想继续使用此方法,请尝试将 queryUrl 值替换为以下内容。
var queryUrl ='?$select=ID,Title,Body,Folder/ItemCount,FieldValuesAsText/FileRef,FieldValuesAsText/Author&$expand=FieldValuesAsText,Folder/ItemCount';
基本上,我想做的是,不是直接查询 Author 字段,而是从 FieldValuesAsText 下请求它。您请求 FileRef 属性的方法几乎相同。