通过JQuery获取Sharepoint网站集URL

时间:2012-03-30 06:40:27

标签: sharepoint sharepoint-2010

我有一个特殊要求,我需要从JQuery获取所有网站集URL列表。任何人请帮助

2 个答案:

答案 0 :(得分:1)

我担心您无法获得纯JavaScript中所有网站集的列表。我假设您是指Web应用程序或所有Web应用程序中的所有现有网站集。

如果您的页面(aspx)在SharePoint服务器上运行 ,您可以在页面上放置一些服务器端代码,将列表“呈现”为JavaScript,然后只需访问它。这将是最简单的方法;可能使用Page.ClientScript.RegisterStartupScript

如果您的页面(和/或Web应用程序)在SharePoint场外部运行 ,则必须创建Web服务(asmx)或处理程序(ashx)并将其部署到SharePoint场。您可能会将网站集列表作为JSON内容进行响应,并通过页面上的jQuery(AJAX)使用它。

该功能仅在服务器端SharePoint API中提供。在任何情况下,您都可以使用SPWebService.ContentService.WebApplicationsapplication.Sites来获取列表:

var json = new StringBuilder();
foreach (var site in SPWebService.ContentService.WebApplications.SelectMany(
                         application => application.Sites))
    using (site) {
        if (json.Length > 0)
            json.Append(',');
        json.Append('"').Append(site.Url).Append('"');
    }
json.Insert(0, "[").Append("]");

---费达

答案 1 :(得分:0)

尝试以下代码。您可以使用客户端对象模型获取所有网站集

function loadWebs() {

   var clientContext = new SP.ClientContext.get_current();

   this.webs = clientContext.get_web().get_webs();

   clientContext.load(this.webs);

   clientContext.executeQueryAsync(Function.createDelegate(this, this.onWebsLoaded), Function.createDelegate(this, this.onQueryFailed));

}

function onQueryFailed(sender, args) {

   alert('request failed ' + args.get_message() + '\n' + args.get_stackTrace());

}

function onWebsLoaded(sender, args) {

   for (var i = 0; i < this.webs.get_count(); i++) {

   alert(this.webs.itemAt(i).get_title());

   }    
}
ExecuteOrDelayUntilScriptLoaded(loadWebs, "sp.js");