2015-10-21 70 views
0

我已到处寻找此问题的解决方案,并且已经做了简短的介绍。如果有人能告诉我这个诀窍,我会很高兴。在SharePoint Online加载项中通过CSOM/JSOM获取SharePoint ClientContext

范围:我正在构建SharePoint Online的SharePoint加载项。在appweb中,我尝试使用Web部件通过CSOM或JSOM获取ListItem的ClientContext。我无法使用沙箱解决方案。

主要目标:我需要ClientContext,以便我可以获取ListItem的正文,使用GetBytes,并且说zip或UTF8编码正文。我还需要使用SP.ListOperation.Selected.getSelectedItems(clientContext)来选择多个用户已选择的ListItem。

代码示例(不完全):

<script> 
     SP.SOD.executeFunc('sp.js', 'SP.ClientContext', sharePointReady); 

     function helloWorldTest() { 
      alert("Function helloWorldTest Active"); 
      var listURL = '/sites/dev/'; 
      var clientContext = new SP.ClientContext(listURL); 
      var olist = clientContext.get_web().get_lists().getByTitle('Secure List') 

      var currentLib = web.get_lists().getById(currentlibid); //Gets the current Library 
      var selectedItems = SP.ListOperation.Selection.getSelectedItems(clientContext); 
      for (var i in selectedItems) { 
       var currentItem = currentLib.getItemById(selectedItems[i].id); 
       context.load(currentItem); 
       for (i in items) { 
        selItems += '|' + selectedItems[i].id; 
       } 


      } 
     } 


       /* 
       var itemCreateInfo = new SP.ListItemCreationInformation(); 
       this.oListItem = oList.addItem(itemCreateInfo); 

       oListItem.set_item('Title', 'Test'); 
       oListItem.set_item('Body', 'Hello World!'); 

       oListItem.update(); 

       clientContext.load(oListItem); 

       clientContext.executeQueryAsync(Function.createDelegate(this, this.onQuerySucceeded), Function.createDelegate(this, this.onQueryFailed)); 
       alert("fuction complete"); 
      } 

      function onQuerySucceeded() { 

       alert('Item created: ' + oListItem.get_id()); 
      } 

      function onQueryFailed(sender, args) { 

       alert('Request failed. ' + args.get_message() + '\n' + args.get_stackTrace()); 
      } 
     } 
     */ 
    </script> 

我会很感激的帮助。谢谢。

回答

0

如果你想获取当前网站客户端上下文,那么你可以只使用:

SP.ClientContext.get_current() 

如果你想建立一个客户端上下文可以从应用程序网络上接触到主机的网络,那么你需要使用主机网站的完整URL。在上面的代码看起来你正在构建这样的客户端上下文:

var listURL = '/sites/dev/'; 
var clientContext = new SP.ClientContext(listURL); 

这是一个相对URL和创建客户端上下文时,将无法正常工作。通常,主机网站的URL可作为名为SPHostUrl的查询字符串参数提供,因此您可能需要从该处取得该网址。并且知道它必须是单独的网站的URL,例如http://server/sites/dev/而不是像http://server/sites/dev/default.aspx或另一个网站资源的URL。

相关问题