sharepoint 获取具有查找列的列表项
示例
有时,您的列表结构可能如下所示:
动物清单表
动物类型表
可能不是最严重的示例,但是这里的问题仍然有效。当您使用常规请求从SharePoint列表中检索值时,对于Type动物的,您将仅取回TypeIdJSON响应中称为的字段。为了仅通过单个AJAX调用即可扩展这些项目,URL参数中需要一些额外的标记。
这个例子不仅适用于查找列。当您使用People/Groups列,他们基本上只是查找为好,这样可以拉动项目,如Title,EMail和其他人很容易。
范例程式码
重要说明:定义要从查询列中取回的字段时,必须在原始表中以该字段的名称为前缀。例如,如果NumLegs要从查找列取回属性,则必须键入Type/NumLegs。
的JavaScript
// webUrl: The url of the site (ex. https://www.contoso.com/sites/animals)
//listTitle:要查询的列表的名称
//selectFields:您要取回的特定字段
//expandFields:需要从查找表中拉出的字段的名称
//callback:成功时回调函数的名称
function getItems(webUrl,listTitle,selectFields, expandFields, callback){
var endpointUrl = webUrl + "/_api/web/lists/getbytitle('" + listTitle + "')/items";
endpointUrl+= '?$select=' + selectFields.join(",");
endpointUrl+= '&$expand=' + expandFields.join(",");
return executeRequest(endpointUrl,'GET', callback);
}
function executeRequest(url,method,callback,headers,payload)
{
if (typeof headers == 'undefined'){
headers = {};
}
headers["Accept"] = "application/json;odata=verbose";
if(method == "POST") {
headers["X-RequestDigest"] = $("#__REQUESTDIGEST").val();
}
var ajaxOptions =
{
url: url,
type: method,
contentType: "application/json;odata=verbose",
headers: headers,
success: function (data) { callback(data) }
};
if(method == "POST") {
ajaxOptions.data= JSON.stringify(payload);
}
return $.ajax(ajaxOptions);
}
//通过将所有参数设置为getItems函数来设置ajax请求
function getAnimals() {
var url = "https://www.contoso.com/sites/animals";
var listTitle = "AnimalListing";
var selectFields = [
"Title",
"Age",
"Value",
"Type/Title",
"Type/NumLegs"
];
var expandFields = [
"Type/Title",
"Type/NumLegs"
];
getItems(url, listTitle, selectFields, expandFields, processAnimals);
}
//回调功能
//数据:返回SharePoint提供的数据
function processAnimals(data) {
console.log(data);
//在这里处理数据
}
//开始整个过程
getAnimals();