2012-12-05 118 views
2

以下是我在我的项目做的:为什么我无法通过JavaScript在JavaScript中获取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> 

但是,警报(上下文)不能执行,当我检查检测控制台这表明我TypeError: SP.ClientContext is not a constructor,也就是说有什么不对的初始化的ClientContext。为什么?我如何获得ClientContext?还是由于缺乏SP.js而导致?

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

回答

4

而是直接在<script>块写尝试在function插入并呼吁体载荷的功能。

另一个好办法就是使用jQuery

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

}); 

一次试试这个,即使它不是那么工作将试图找到另一种解决方案的呼叫。

除此之外,按照史蒂夫的建议,首先包括sp.js并执行其余的事情。

+0

是不是由默认的SharePoint加载sp.js?这是通过添加一些代码来加载sp.js! – JacobChan

+0

一旦你有一个SharePoint站点,sp.js将自动加载。如果你想检查是否加载了'sp.js',在IE和goto script标签中找到开发工具并搜索'sp.js',你会发现它。 – Mihir

+0

我确实有一个SharePoint网站。但似乎不加载sp.js,所以很困惑 – JacobChan

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

它现在工作,但由OM操作的延迟看起来不太好 – JacobChan

相关问题