以下是我在项目中所做的事情:
<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而引起的?
我的最终解决方案是:将此语句添加到母版页:,然后一切正常!愿这可以帮到你。
答案 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>