0

如何使用 Sharepoint 托管应用程序访问 HostWeb 的子站点?我想访问托管应用程序的 Hostweb 子站点中的列表。

4

2 回答 2

2

我不确定我是否完全理解你的问题,但我会尽力回答。

术语“主机网站”实际上是相对的,在这种情况下,它表示安装应用程序的站点。

要超越这一点,你需要两件事。

  1. 您需要应用程序中的权限。在 App Manifest 中,有一个权限选项卡。您可能对两个感兴趣:“Web”和“Site Collection”。这是描述这些的链接:http: //msdn.microsoft.com/en-us/library/fp142383.aspx

  2. 接下来的事情将超出 AppWeb 的范围。这是通过一个叫做 RequestExecutor 的东西来完成的。这允许您要求 SharePoint 代表您进行呼叫以超出应用程序的范围,但它只会在您允许的地方进行。这是该过程的链接:http: //msdn.microsoft.com/en-us/library/fp179927.aspx

做这两件事将使您能够获得所需的任何东西。

于 2013-08-05T18:09:04.537 回答
0
function RetrieveWebsFromHostWeb() {

var websUrl = _appWebUrl + "/_api/SP.AppContextSite(@target)/site/rootWeb/webinfos?@target='" + _hostWebUrl + "'";

$.ajax({
    url: websUrl,
    method: "GET",
    headers: { "Accept": "application/json; odata=verbose" },
    success: this.OnRetrieveWebsFromHostWebSucceeded
});

}

function OnRetrieveWebsFromHostWebSucceeded(sender, args) {

console.log(sender.d.results);

}

function GetQueryStringParameter(paramToRetrieve) {
    var params = document.URL.split("?")[1].split("&");
    var strParams = "";
    for (var i = 0; i < params.length; i = i + 1) {
        var singleParam = params[i].split("=");
        if (singleParam[0] == paramToRetrieve)
            return singleParam[1];
    }
}
var _appWebUrl = decodeURIComponent(this.GetQueryStringParameter("SPAppWebUrl"));
var _hostWebUrl = decodeURIComponent(this.GetQueryStringParameter("SPHostUrl"));
于 2014-10-03T04:53:13.223 回答