2014-01-28 7 views
0

Я пытаюсь написать небольшой SPA, который действует как слой пользовательского интерфейса для списка SharePoint.SP.js «Uncaught TypeError: Object [object Object] не имеет метода get_staticObjects»

Я успешно сделал это с помощью обычного вызова AJAX, но из-за ограничений этого метода я теперь хочу сделать это с помощью объектной модели JavaScript.

Проблема Я сталкиваясь ошибка с SP.js (из названия):

* Uncaught 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

На основании комментария Джона Чепмена (http://sharepoint.stackexchange.com/a/22776/18140) ответ может заключаться в том, что то, что я пытаюсь, невозможно. Я попытаюсь воссоздать свою страницу на странице приложения SharePoint. – Joshua

+0

Возможно, вы захотите попробовать некоторые сторонние библиотеки, такие как SharepointPlus (http://aymkdn.github.io/SharepointPlus/) или SPServices (http://spservices.codeplex.com/), а не те из них, которые не легки использовать.... – AymKdn

ответ

0

Мне удалось решить эту проблему, создав пустую страницу в SharePoint Designer и вставив мой HTML и связавшись с моими сценариями. SharePoint не будет правильно загружать фреймворк JavaScript на HTML-странице - только на ASPX-странице, созданной SharePoint.

Смежные вопросы