我有一个特殊要求,我需要从JQuery获取所有网站集URL列表。任何人请帮助
答案 0 :(得分:1)
我担心您无法获得纯JavaScript中所有网站集的列表。我假设您是指Web应用程序或所有Web应用程序中的所有现有网站集。
如果您的页面(aspx)在SharePoint服务器上运行 ,您可以在页面上放置一些服务器端代码,将列表“呈现”为JavaScript,然后只需访问它。这将是最简单的方法;可能使用Page.ClientScript.RegisterStartupScript。
如果您的页面(和/或Web应用程序)在SharePoint场外部运行 ,则必须创建Web服务(asmx)或处理程序(ashx)并将其部署到SharePoint场。您可能会将网站集列表作为JSON内容进行响应,并通过页面上的jQuery(AJAX)使用它。
该功能仅在服务器端SharePoint API中提供。在任何情况下,您都可以使用SPWebService.ContentService.WebApplications和application.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");