为什么SP.ClientContext()。get_current抛出未捕获的类型错误:undefined不是函数

时间:2014-05-09 22:43:10

标签: javascript sharepoint visual-studio-2013 sharepoint-2013

我正在参加此次会议研讨会http://video.ch9.ms/sessions/spc/2014/SPC261.mp4,在那里他们教授如何进行分享点APP

在某些时候我有这个脚本

$(document).ready(function () {

    //get context and then username
    context = new SP.ClientContext.get_Current();
    web = context.get_web();

    //get the tasks for the user
    getTaskCountForUser();


});

它只会计算任务列表中剩余的任务数量。

我在应用程序部分aspx文件中包含下一个脚本

<%--<script type="text/javascript" src="../Scripts/jquery-1.9.1.min.js"></script>--%>
<script type="text/javascript" src="/_layouts/15/MicrosoftAjax.js"></script>
<script src="/_layouts/15/sp.js" type="text/javascript"></script>


<script src="https://ajax.aspnetcdn.com/ajax/jquery/jquery-1.9.1.min.js" type="text/javascript"></script>
<script src="//ajax.aspnetcdn.com/ajax/4.0/1/MicrosoftAjax.js" type="text/javascript"></script>
<script src="/_layouts/15/sp.runtime.debug.js" type="text/javascript"></script>
<script src="/_layouts/15/sp.debug.js" type="text/javascript"></script>
<script src="https://ajax.aspnetcdn.com/ajax/jquery.ui/1.9.0/jquery-ui.min.js" type="text/javascript"></script>
<script src="https://ajax.aspnetcdn.com/ajax/knockout/knockout-2.1.0.js" type="text/javascript"></script>
<script src="../Scripts/QuickTask.js" type="text/javascript"></script>

一切似乎都运转得很好。应用程序部分在sahrepoint在线显示,我可以将它包含在家中但脚本不起作用并抛出未捕获的TypeError:undefined不是行中的函数

context = new SP.ClientContext.get_Current();

我尝试将此代码包含在内

ExecuteOrDelayUntilScriptLoaded(function () {
   //my code above in here

}, "sp.js");

但在这种情况下,第一行会抛出相同的错误。

可以错过什么?我正在使用我的msdn订阅,Vsual Studio 2013中的Sharepoint E3在线帐户,在视频中,这个人只是无缝地通过它。

由于

1 个答案:

答案 0 :(得分:11)

你的代码中有一些拼写错误,调试js文件的链接(不是这个不正确,但为什么你需要它们?)和获取ClientContext对象时出错。

要修复脚本包含问题,请使用以下脚本标记而不是您的:

<script type="text/javascript" src="https://ajax.aspnetcdn.com/ajax/jquery/jquery-1.9.1.min.js" ></script>
<script type="text/javascript" src="/_layouts/15/MicrosoftAjax.js"></script>
<script type="text/javascript" src="/_layouts/15/sp.runtime.js"></script>
<script type="text/javascript" src="/_layouts/15/sp.js" ></script>
<script type="text/javascript" src="https://ajax.aspnetcdn.com/ajax/jquery.ui/1.9.0/jquery-ui.min.js" ></script>
<script type="text/javascript" src="https://ajax.aspnetcdn.com/ajax/knockout/knockout-2.1.0.js" ></script>

但主要问题在于这一行:

context = new SP.ClientContext.get_Current();

在这种情况下,您不需要使用new关键字,而是使用getter获取上下文对象。 它应该是:

context = SP.ClientContext.get_current();

另请注意get_current()函数的情况 - current字应从小写字符开始。