为什么我能';在JavaScript中不能通过OM获取ClientContext?
以下是我在项目中所做的:为什么我能';在JavaScript中不能通过OM获取ClientContext?,javascript,sharepoint,sharepoint-2010,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
<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>
警惕(“之前”);
//它无法工作,因为列表位于名为“服务”的子网站中
//var clientContext=SP.clientContext.get_current();
var context=new SP.ClientContext(“http://sp2010dev1:88/Service/");
警报(上下文);
但是,警报(上下文)无法执行,当我检查concole时,它显示我类型错误:SP.ClientContext不是构造函数
,也就是说ClientContext的初始化有问题。为什么?如何获取ClientContext?还是因为缺少SP.js
我的最终解决方案是:将此语句添加到母版页:,然后一切正常!这可能会对您有所帮助。是的,可能是因为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>
ExecuteOrderLayUntilScriptLoaded(函数(){
/*您的代码在这里*/;
},“sp.js”);
不要直接在
块中写入,而是尝试插入函数
并在负重时调用该函数
另一个好方法是使用jquery调用
$(document).ready()(function(){
var context =new SP.ClientContext("http://sp2010dev1:88/Service/");
alert(context );
});
尝试一次,即使它不起作用,然后将尝试找到另一个解决方案
根据steve的建议,除此之外,还包括第一个
sp.js
,并执行其余的操作。默认情况下,SharePoint不加载sp.js吗?它的工作原理是添加一些代码来加载sp.js!拥有sharepoint网站后,sp.js将自动加载。如果要检查是否加载了sp.js
,请转到IE和“转到脚本”选项卡中的开发人员工具并搜索sp.js
,您会找到它。我确实有一个SharePoint网站。但是它似乎没有加载sp.js,所以现在很混乱,但OM操作的延迟看起来不是很好