为什么我无法在JavaScript中通过OM获取ClientContext?

时间:2012-12-05 01:35:09

标签: javascript sharepoint sharepoint-2010

以下是我在项目中所做的事情:

<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>

但是,警报(上下文)无法执行,当我检查它显示给我TypeError: SP.ClientContext is not a constructor时,也就是说ClientContext的初始化有问题。为什么?我怎样才能获得ClientContext?还是因为缺少SP.js而引起的?

我的最终解决方案是:将此语句添加到母版页:,然后一切正常!愿这可以帮到你。

2 个答案:

答案 0 :(得分:4)

不要直接在<script>块中书写,而是尝试在function中插入并在身体负载上调用该函数。

另一个好方法是使用jquery调用

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

});

尝试一次,即使它不起作用,也会尝试找到另一种解决方案。

根据史蒂夫建议,首先包括sp.js并执行剩余的事情。

答案 1 :(得分: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>