SP.js" Uncaught TypeError:Object [object Object]没有方法' get_staticObjects'"

时间:2014-01-28 18:19:35

标签: javascript sharepoint sharepoint-2010 sp.js

我正在尝试编写一个小型SPA,作为SharePoint列表的UI层。

我已经成功地使用常规的AJAX调用,但是,由于该方法的局限性,我现在想要使用JavaScript对象模型。

我遇到的问题是SP.js(来自标题)的错误:

*未捕获TypeError:对象[object Object]没有方法'get_staticObjects'*

这几乎使我无法访问剧本。

以下是该页面的代码:

<!DOCTYPE html>
<html>
<head>
    <title>JavaScript Object Model Test</title>

    <script type="text/javascript" src="js/jquery-1.10.2.min.js"></script>
    <script type="text/javascript" src="js/knockout-2.3.0.js"></script>

    <script type="text/javascript" src="/_layouts/MicrosoftAjax.js"></script>
    <script type="text/javascript" src="/_layouts/1033/init.js"></script>
    <script type="text/javascript" src="/_layouts/SP.js"></script>
    <script type="text/javascript" src="/_layouts/SP.Core.js"></script>

</head>
<body>
<script type="text/javascript">
    var siteUrl = '/sites/MySiteCollection';
    function retrieveListItems() {
        var clientContext = new SP.ClientContext(siteUrl);
        var oList = clientContext.get_web().get_lists().getByTitle('Announcements');
        var camlQuery = new SP.CamlQuery();
        camlQuery.set_viewXml('<View><Query><Where><Geq><FieldRef Name=\'ID\'/>' + 
            '<Value Type=\'Number\'>1</Value></Geq></Where></Query><RowLimit>10</RowLimit></View>');
        this.collListItem = oList.getItems(camlQuery);
        clientContext.load(collListItem);
        clientContext.executeQueryAsync(Function.createDelegate(this, this.onQuerySucceeded), Function.createDelegate(this, this.onQueryFailed));       
    }

    function onQuerySucceeded(sender, args) {
        var listItemInfo = '';
        var listItemEnumerator = collListItem.getEnumerator();
        while (listItemEnumerator.moveNext()) {
            var oListItem = listItemEnumerator.get_current();
            listItemInfo += '\nID: ' + oListItem.get_id() + 
                '\nTitle: ' + oListItem.get_item('Title') + 
                '\nBody: ' + oListItem.get_item('Body');
        }
        alert(listItemInfo.toString());
    }
    function onQueryFailed(sender, args) {
        alert('Request failed. ' + args.get_message() + '\n' + args.get_stackTrace());
    }
    ExecuteOrDelayUntilScriptLoaded(retrieveListItems, "sp.js");
</script>
</body>
</html>

当我运行时,没有任何反应,但控制台会输出上面的错误。

1 个答案:

答案 0 :(得分:0)

我设法通过在SharePoint Designer中创建空白页并嵌入我的HTML并链接到我的脚本来解决此问题。 SharePoint无法在HTML页面中正确加载JavaScript框架 - 仅在SharePoint创建的ASPX页面中。