我正在尝试从一个页面中的站点和几个级别的子站点访问列表数据。 我在网上搜索过并试图在Stack Overflow上找到几个解决方案,但无济于事。 这是我正在使用的简化代码。
// parent-level
var clientCtx = new SP.ClientContext.get_current();
getListItems(listName, camlView,fields, clientCtx);
//sub-site level
clientCtx = new SP.ClientContext(subSiteUrl);
getListItems((listName, camlView,fields, clientCtx);
此代码适用于父网站,但不适用于子网站。 在子站点的getListItems函数内部传递的客户端上下文包含正确的URL,并且似乎实例化所有对象:web,list,listItems等,但无法使用"未知错误"枚举列表项。对于我尝试过的两个子站点都会发生同样的事情。
function getListItems(listName, queryString, fields, clientCtx)
{
web = clientCtx.get_web();
var list = web.get_lists().getByTitle(listName);
var query = new SP.CamlQuery();
query.set_viewXml(queryString);
var listItems = list.getItems(query);
query.set_viewXml(queryString);
var listItems = list.getItems(query);
var fieldList = fields.join(",");
clientCtx.load(listItems);
clientCtx.executeQueryAsync(function () {
var resultItems = [];
var listItemEnumerator = listItems.getEnumerator();
while (listItemEnumerator.moveNext()) {
var listItem = listItemEnumerator.get_current();
var fieldValues = listItem.get_fieldValues();
var resultItem = {};
for (var i = 0; i < fields.length; i++) {
resultItem[fields[i]] = listItem.get_item(fields[i]);
}
resultItems.push(resultItem);
}
return resultItems;
}
...
}