从SharePoint加载项(app)对Project server oData feed进行跨域调用时出现问题

时间:2016-08-31 09:33:07

标签: cross-domain sharepoint-2013 project-server

我正在开发一个SharePoint Hosted Add-In,它将显示项目服务器项目。我正在使用SP.RequestExecutor进行跨域调用。它给我以下错误“无法找到请求ProjectData的资源。”

我在AppManifest文件中给出了Reporting(Project Server)读取权限。以下是我的代码。

$(document).ready(function () {

    SP.SOD.executeFunc('SP.js', 'SP.ClientContext', initializePage);
});

function initializePage() {
    hostweburl = decodeURIComponent(getQueryStringParameter("SPHostUrl"));
    appweburl = decodeURIComponent(getQueryStringParameter("SPAppWebUrl"));

    var scriptbase = hostweburl + "/_layouts/15/";
    $.getScript(scriptbase + "SP.RequestExecutor.js", getProjectList);
}


function getProjectList() {

    var executor;
    executor = new SP.RequestExecutor(appweburl);

    executor.executeAsync({
        url: appweburl + "/_api/SP.AppContextSite(@target)/ProjectData/Projects?$filter=ProjectState eq 'In Progress'&$select=ProjectId,ProjectName&@target='" +
             hostweburl + "'",
        method: "GET",
        crossDomain: true,
        headers: { "Accept": "application/json; odata=verbose" },
        success: function (data) {
            var jsonObject = JSON.parse(data.body);
            alert(jsonObject.d.results);
        },
        error: function (error) {
            alert(error.body);
        }
    }
    );
}

1 个答案:

答案 0 :(得分:-1)

无需使用SP.AppContextSite(@target)

尝试以下网址 -

  

url:appweburl +“/ _ api / ProjectData / Projects?$ filter = ProjectState eq   '进行中'& $ select = ProjectId,ProjectName“

您的应用的权限应包括“报告的读取权限”。