2014-03-19 42 views
0

我按照msdn的指示通过JSOM获取WorkflowSubscriptionService。JSOM SharePoint 2013获取工作流时出错订阅

与SharePoint 2013工作流服务客户端对象模型工作: http://msdn.microsoft.com/en-us/library/office/dn481315(v=office.15).aspx

var clientContext = SP.ClientContext.get_current(); 
var workflowServicesManager = SP.WorkflowServices.WorkflowServicesManager.newObject(clientContext, clientContext.get_web()); 
var workflowSubscriptionService = workflowServicesManager.getWorkflowSubscriptionService(); 

这三行总是抛出一个错误: 类型错误:对象[对象的对象]无方法“GET_CONTEXT” 消息: “对象[对象对象]没有方法'get_context'” stack:(...) get stack:function(){[native code]} set stack:function(){[native code]} proto:错误

我找不到一个错误。这是一个已知的错误?

回答

4

由于指定的对象尚未加载,因此会发生这些错误。

为了使用SharePoint 2013工作流服务的客户端对象模型以下JSOM库应加载:

  • SP.js
  • SP.Runtime.js
  • SP.WorkflowServices.js

您可以使用,例如,SP.SOD.executeFunc(SharePoint JavaScript库)或jQuery.getScript()(jQuery库)来确保指定的文件已被l oaded。

实施例:

var scriptbase = _spPageContextInfo.webAbsoluteUrl + "/_layouts/15/";  
$.getScript(scriptbase + "SP.js", function() {  
    $.getScript(scriptbase + "SP.Runtime.js", function() {  
     $.getScript(scriptbase + "SP.WorkflowServices.js", function() { 

      var clientContext = SP.ClientContext.get_current(); 
      var workflowServicesManager = SP.WorkflowServices.WorkflowServicesManager.newObject(clientContext, clientContext.get_web()); 
      var workflowSubscriptionService = workflowServicesManager.getWorkflowSubscriptionService();  

      //... 

     });  
    }); 
});  
0

请确保您在尝试获取上下文之前验证CSOM已加载。下面是如何验证代码在SharePoint的JS加载后执行的示例。在这种情况下,我还记录到CSOM使用jQuery加载的div。

$(document).ready(function() 
{ 
    SP.SOD.executeFunc('sp.js', 'SP.ClientContext', function() 
    { 
     $('div#log').append("SharePoint Client Object Model Loaded<br/>"); 
    }); 
});