SharePoint App开发AppWeb与HostWeb的通信

时间:2013-02-01 08:28:33

标签: javascript sharepoint-2013

我在SharePoint托管应用中遇到问题。我想要做的就是,获取应用程序运行的网络列表并使用这些列表。

使用此代码,我将获得AppWeb中的列表:

this.web = context.get_web();
this.lists = this.web.get_lists();
this.context.load(this.lists);

我已经尝试过类似的东西,从HostWeb获取列表:

this.context = new SP.ClientContext("https://sharepoint-server.com/_layouts/15/start.aspx#/");
var oWebsite = client.get_web();
this.lists = oWebsite.get_lists();
this.context.load(this.lists);

但它不会从此网站返回列表。

有人能帮助我吗?

非常感谢!

2 个答案:

答案 0 :(得分:0)

在调用Load方法后尝试调用this.context.ExecuteQuery()。在ExecuteQuery()调用之后,上下文中的对象才可用。

HTH。

答案 1 :(得分:0)

调用'load'函数后,需要使用回调函数调用'executeQueryAsync'方法来获得结果:请参阅example code from MSDN

function retrieveAllListProperties(siteUrl) {
  var clientContext = new SP.ClientContext(siteUrl);
  var oWebsite = clientContext.get_web();
  this.collList = oWebsite.get_lists();
  clientContext.load(collList);

  clientContext.executeQueryAsync(
      Function.createDelegate(this, this.onQuerySucceeded), 
      Function.createDelegate(this, this.onQueryFailed)); }

function onQuerySucceeded() {
  var listInfo = '';
  var listEnumerator = collList.getEnumerator();

  while (listEnumerator.moveNext()) {
      var oList = listEnumerator.get_current();
      listInfo += 'Title: ' + oList.get_title() + ' Created: ' + oList.get_created().toString() + '\n';
}
alert(listInfo); }

function onQueryFailed(sender, args) {
  alert('Request failed. ' + args.get_message() + '\n' + args.get_stackTrace()); }