3

これが私のプロジェクトでしたことです:

<asp:Content ContentPlaceHolderID="PlaceHolderAdditionalPageHead" runat="server">
<script type="text/javascript">
  alert("before");
  //It can not work cause the LIST is in the subsite called "Service"
  //var clientContext = SP.ClientContext.get_current();
  var context =new SP.ClientContext("http://sp2010dev1:88/Service/");
  alert(context );  
</script>
</asp:Content>

しかし、alert(context)を実行できません。表示されたコンコールを確認するとTypeError: SP.ClientContext is not a constructor、つまり、ClientContextの初期化に問題がありました。なんで?ClientContextを取得するにはどうすればよいですか?それとも、SP.jsの欠如が原因でしたか?

私の最終的な解決策は次のとおりです。マスターページにこのステートメントを追加すると、すべてが正常に機能します。これがあなたを助けることができますように。

4

2 に答える 2

4

ブロックに直接書き込む代わりに、<script>に挿入して、functionボディロードでその関数を呼び出してみてください。

もう1つの良い方法は、jqueryを使用して呼び出すことです

$(document).ready()(function(){
var context =new SP.ClientContext("http://sp2010dev1:88/Service/");
  alert(context );  

});

これを一度試してみてください。機能していない場合でも、別の解決策を見つけようとします。

スティーブの提案に従ってこれに加えて、最初に含めsp.jsて残りのことを実行します。

于 2012-12-05T09:15:17.020 に答える
2

はい、おそらくSP.jsがロードされていないことが原因です。これを試して:

<SharePoint:ScriptLink runat="server" Name="SP.js" Localizable="false" OnDemand="False" LoadAfterUI="True"></SharePoint:ScriptLink>
<script type="text/javascript">
    ExecuteOrDelayUntilScriptLoaded(function () {
        /* your code here */;
    }, "sp.js");
</script>
于 2012-12-05T03:31:49.017 に答える