2017-05-02 12 views
0

私はこれを解消するためにインターネットの全面を見てきましたが、私がしようとしているものには、多くの例がありますが、実際には正確なものはありません。私がやろうとしていることは次のとおりです。JSOM CDLを使用してプロバイダのホストアドイン部分からSharepoint OnlineホストのWebリストデータにアクセスしようとするとエラーが発生しました

C#コードビハインドでaspxページを持つSharepointアドインをプロバイダがホストしています。私はまた、プロバイダーのホスト側(Web側ではなく、app-webではない)のjavascriptファイルを持っていて、私はホストWebからListデータにアクセスしようとしています。私はそれがそれらに達することはありませんので、成功と失敗の機能を表示する必要はありません

var customWP_NewsAndInfo_allArticles; 
var hostweburl; 
var addinweburl; 

    // This code runs when the DOM is ready and creates a context object which is needed to use the SharePoint object model 
    $(document).ready(function() { 
     //Get the URI decoded URLs. 
     hostweburl = 
      decodeURIComponent(
       getQueryStringParameter("SPHostUrl") 
     ); 
     addinweburl = 
      decodeURIComponent(
       getQueryStringParameter("SPAppWebUrl") 
     ); 

     // resources are in URLs in the form: 
     // web_url/_layouts/15/resource 
     var scriptbase = hostweburl + "/_layouts/15/"; 

     // Load the js files and continue to the successHandler 
     $.getScript(scriptbase + "SP.Runtime.js", 
      function() { 
       $.getScript(scriptbase + "SP.js", 
        function() { $.getScript(scriptbase + "SP.RequestExecutor.js", customWP_NewsAndInfo_retrieveListItems); } 
        ); 
      } 
      ); 
    }); 


function customWP_NewsAndInfo_retrieveListItems() { 
     // get parameters from the query string for add-in part properties 
     var sourceList = 'News and Information'; 


     // context: The ClientContext object provides access to 
     //  the web and lists objects. 
     // factory: Initialize the factory object with the 
     //  app web URL. 
     var clientContext = new SP.ClientContext(addinweburl); 
     var factory = new SP.ProxyWebRequestExecutorFactory(addinweburl); 
     clientContext.set_webRequestExecutorFactory(factory); 
     var appContextSite = new SP.AppContextSite(clientContext, hostweburl); 

     this.web = appContextSite.get_web(); 
     clientContext.load(this.web); 

     var web = clientContext.get_web(); 

     var oList = web.get_lists().getByTitle(sourceList); 

     var items = oList.getItems(SP.CamlQuery.createAllItemsQuery()); 
     var includeExpr = 'Include(Title)'; 
     clientContext.load(items, includeExpr); 

     clientContext.executeQueryAsync(
      Function.createDelegate(this, this.customWP_NewsAndInfo_onQuerySucceeded), 
      Function.createDelegate(this, this.customWP_NewsAndInfo_onQueryFailed) 
     ); 
} 

はここで私が使用しているコードです。それはexecuteQueryAsyncを実行すると、それは常にこのエラーとスタックトレースで戻ってくる:

MicrosoftAjax.js:5 Uncaught TypeError: Cannot read property 'apply' of undefined 
    at Array.<anonymous> (MicrosoftAjax.js:5) 
    at MicrosoftAjax.js:5 
    at SP.ClientRequest.$3I_0 (SP.Runtime.js?_=1493695027549:2) 
    at Array.<anonymous> (MicrosoftAjax.js:5) 
    at MicrosoftAjax.js:5 
    at Sys.Net.WebRequest.completed (MicrosoftAjax.js:5) 
    at SP.ProxyWebRequestExecutor.$1W_1 (SP.RequestExecutor.js?_=1493695027551:2) 
    at Function.SP.ProxyWebRequestExecutorInternal.processSuccessCallback (SP.RequestExecutor.js?_=1493695027551:2) 
    at SP.RequestInfo.success (SP.RequestExecutor.js?_=1493695027551:2) 
    at SP.RequestExecutor.internalOnMessage (SP.RequestExecutor.js?_=1493695027551:2) 

私もSharepointのホステッドアドインを試みることによって、トラブルシューティングを試してみましたが、私は非常によく似たエラーが出る:

Uncaught TypeError: Cannot read property 'apply' of undefined 
    at Array.<anonymous> (ScriptResource.axd?d=NmWpgseF5Lm2ObZqsFB7X8Sc_FI92_ZNS_ucNmpXp96dB8TO5HMUZeqx3R5ocUw8b6hyk9AKxItxXJ…:5) 
    at ScriptResource.axd?d=NmWpgseF5Lm2ObZqsFB7X8Sc_FI92_ZNS_ucNmpXp96dB8TO5HMUZeqx3R5ocUw8b6hyk9AKxItxXJ…:5 
    at SP.ClientRequest.$x_0 (SP.Runtime.js?_=1493693899820:2) 
    at SP.ClientRequest.$3I_0 (SP.Runtime.js?_=1493693899820:2) 
    at Array.<anonymous> (ScriptResource.axd?d=NmWpgseF5Lm2ObZqsFB7X8Sc_FI92_ZNS_ucNmpXp96dB8TO5HMUZeqx3R5ocUw8b6hyk9AKxItxXJ…:5) 
    at ScriptResource.axd?d=NmWpgseF5Lm2ObZqsFB7X8Sc_FI92_ZNS_ucNmpXp96dB8TO5HMUZeqx3R5ocUw8b6hyk9AKxItxXJ…:5 
    at Sys.Net.WebRequest.completed (ScriptResource.axd?d=NmWpgseF5Lm2ObZqsFB7X8Sc_FI92_ZNS_ucNmpXp96dB8TO5HMUZeqx3R5ocUw8b6hyk9AKxItxXJ…:5) 
    at SP.ProxyWebRequestExecutor.$1W_1 (SP.RequestExecutor.js?_=1493693899822:2) 
    at Function.SP.ProxyWebRequestExecutorInternal.processSuccessCallback (SP.RequestExecutor.js?_=1493693899822:2) 
    at SP.RequestInfo.success (SP.RequestExecutor.js?_=1493693899822:2) 

私は "testing"というカスタムリストを作成しようとしましたが、ちょうど'Include(Title)'を使用しましたが、同じエラーが発生しました。私はdebugger;を挿入し、Chrome開発ツールを使用してコードをステップ実行しようとしましたが、難読化されたMicrosoftコードを読むのは難しいです。これを理解する上で助けがあれば、大変感謝しています!早めにありがとう!

ポール

答えて

0

私は最終的に私はそれを実行したときに、それが働いていたことから、this codeを使用し、戻ってからの私の方法を働くことによって、この問題を解決することができました。

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

私はgithubの例と比較すると、その呼び出しは、このようなものだった:私は最終的に問題がコールであることが判明し、私はFunction.createDelegateの一部を取り出したとき

clientContext.executeQueryAsync(onQuerySucceeded, onQueryFailed); 

だけ彼らが使用した構文を使用して、エラーが消えて、私は今リスト項目を読み込むことができます!

なぜこのようなのでしょうか、誰かがこれ以上私にできることよりももっと光を当てることができますか?私が知っているのは、私が試したことは、Hostedの代わりにSharepoint Hostedアドインをテストしても、このコードを変更するまで機能しなかったことだけです。これで、Webサイトのプロバイダのアドインで、クロスドメインライブラリを使用してSharepoint JSOMを使用できます。これは、特にRESTでのこの領域の制限のために、Publishing Imagesで作業する場合、私にとって非常に貴重です。私は代わりに私のケースではRESTを使うことができると知っていましたが、残念ながら、RESTコールは私の状況ではうまくいきません.Publish Imageカラム(Type = "Image")を取得しています。リスト項目ごとに別々の呼び出し。

私は本当にこれが私の立場の誰かを助け、あなたにこれを追跡するのに費やした時間を節約することを願っています!

乾杯!

ポール

関連する問題