Frage

I was following the instruction from msdn to get WorkflowSubscriptionService over JSOM.

Working with the SharePoint 2013 Workflow Services Client Side Object Model: 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();

These three lines always throw a error: TypeError: Object [object Object] has no method 'get_context' message: "Object [object Object] has no method 'get_context'" stack: (...) get stack: function () { [native code] } set stack: function () { [native code] } proto: Error

I can't find a mistake. Is this a known bug?

War es hilfreich?

Lösung

Those errors occur since the specified objects have not been loaded.

In order to use SharePoint 2013 Workflow Services Client Side Object Model the following JSOM libraries should be loaded:

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

You could use, for example, SP.SOD.executeFunc (SharePoint JavaScript Library) or jQuery.getScript() (jQuery ibrary) to ensure that the specified file has been loaded.

Example:

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();    

            //... 

        });    
    });   
});    

Andere Tipps

Make sure you verify that CSOM has loaded before trying to get the context. Here's an example of how to validate your code is executing after SharePoint's JS has loaded. In this case I'm also logging to a div that CSOM has loaded using jQuery.

$(document).ready(function()
{
    SP.SOD.executeFunc('sp.js', 'SP.ClientContext', function() 
    {
        $('div#log').append("SharePoint Client Object Model Loaded<br/>");
    });
});
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top