【发布时间】:2015-11-06 02:04:10
【问题描述】:
我正在为客户创建一个 Angular Sharepoint 托管应用程序。
我在主机网站上有一个列表,我将在其中存储信息,输入将在应用程序中。
我正在尝试从主机网络列表中获取项目的版本历史记录,但运气不佳。
我已经尝试了两个选项:
SPService 选项:
$().SPServices({
operation: "GetVersionCollection",
async: false,
strlistID: "TestList",
strlistItemID: 36,
strFieldName: "Description",
completefunc: function (xData, Status) {
$(xData.responseText).find("Version").each(function (i) {
console.log("Name: " + $(this).attr("Description") + " Modified: " + $(this).attr("Modified"));
});
}
});
上面的代码不起作用,因为列表在主机 web 中,有人知道如何配置上面的代码来访问主机 web 列表吗?
“Versions.aspx”选项:
function getItemVersions(url,listId,itemId,success)
{
var versionsUrl = url + '/_layouts/versions.aspx?list=' + listId + '&ID=' + itemId;
$.get( versionsUrl, function( data ) {
var versionEntries = parseVersionsData(data);
success(versionEntries);
});
}
function parseVersionsData(data){
var entries = {};
var versionList = $(data).find('table.ms-settingsframe');
versionList.find('> tbody > tr').each(function(i){
if(i > 0 && (i) % 2 == 0) {
var verRow = $(this); //get version row
var propsRow = verRow.next(); //get properties row
var versionLabel = verRow.find('td:first').html().trim();
if(versionLabel.length > 0) {
entries[versionLabel] = {};
//extract item version properties
propsRow.find('tr').each(function(i){
var pName = $(this).find('td:nth-child(1)').text().trim();
var pVal = $(this).find('td:nth-child(2)').text().trim();
entries[versionLabel][pName] = pVal;
});
}
}
});
return entries;
}
上面的代码得到错误:
“请求的资源上不存在 'Access-Control-Allow-Origin' 标头。”
我再次不确定如何配置代码以便它可以访问主机 Web 列表。 如果有人有其他方法可以将版本历史记录到应用程序中,我将不胜感激。
【问题讨论】:
标签: angularjs sharepoint sharepoint-2013