Я пытаюсь написать небольшой 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>
Когда я бегу, что ничего не происходит, но консоль выдает ошибку выше.
На основании комментария Джона Чепмена (http://sharepoint.stackexchange.com/a/22776/18140) ответ может заключаться в том, что то, что я пытаюсь, невозможно. Я попытаюсь воссоздать свою страницу на странице приложения SharePoint. – Joshua
Возможно, вы захотите попробовать некоторые сторонние библиотеки, такие как SharepointPlus (http://aymkdn.github.io/SharepointPlus/) или SPServices (http://spservices.codeplex.com/), а не те из них, которые не легки использовать.... – AymKdn