2016-03-07 3 views
1

Привет, я попытался сделать учебник по MSDN. Вот ссылка: https://msdn.microsoft.com/en-us/library/office/hh185007%28v=office.14%29.aspx А вот мой Java код:sharepoint Javascript Коллекция не была инициализирована

<script type="text/javascript"> 
$(document).ready(function() { 
    var scriptbase = "https://example.at/15/"; 
    $.getScript(scriptbase + "SP.Runtime.js", function() { 
     $.getScript(scriptbase + "SP.js", doNext()); 
    }); 
}); 
var siteUrl = "/knowledge/lzpowerbase"; 
function doNext() { 
    console.log("SharePoint geladen!!"); 
    retrieveListItems(siteUrl); 
} 
function retrieveListItems(siteUrl) { 
    var clientContext = new SP.ClientContext(siteUrl); 
    var oList = clientContext.get_web().get_lists().getByTitle('Component Documents');  
    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()); 
} 
</script> 

Каждый раз, когда я пытаюсь запустить его он говорит: Ошибка: Коллекция не была инициализирована. Он не был запрошен или запрос не был выполнен. Возможно, потребуется явно запросить его.

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

ответ

1

В этом примере указанная ошибка возникает из-за линии:

$.getScript(scriptbase + "SP.js", doNext()); 

Из-за недопустимый вызов doNext функции collListItem объекта не получает инициализируется в этом случае.

Решение

Поскольку jQuery.getScript() принимает функцию обратного вызова в качестве второго аргумента, замените строку:

$.getScript(scriptbase + "SP.js", doNext()); 

с:

$.getScript(scriptbase + "SP.js", doNext); 
+0

Если выше решение не работает, замените collListItem в функции успеха с this.collListItem – Vaibhav

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