我正在尝试从SharePoint 2010列表中获取值。列表名称是“serversname / sites / dev / Lists / SitesList / AllItems.aspx”URL处的“SitesList”。我想在警告消息“标题”和“URL”上打印的列。
一旦我运行了所有内容,页面就会加载,但根本没有任何反应。我可以看到我的网络部分在那里,我甚至将代码转换为简单的警报消息,并且它可以工作。我做错了什么?
<script type="text/javascript">
var siteUrl = '/sites/dev/';
function retrieveListItems() {
var clientContext = new SP.ClientContext(siteUrl);
var oList = clientContext.get_web().get_lists().getByTitle('SitesList');
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') +
'\nURL: ' + oListItem.get_item('URL');
}
alert(listItemInfo.toString());
}
function onQueryFailed(sender, args) {
alert('Request failed. ' + args.get_message() + '\n' + args.get_stackTrace());
}
</script>
答案 0 :(得分:1)
看起来你实际上从未触发retrieveListItems
功能。
尝试在var siteUrl
:
<script type="text/javascript">
var siteUrl = '/sites/dev/';
ExecuteOrDelayUntilScriptLoaded(retrieveListItems, "sp.js");
function retrieveListItems() {
...
}
...
</script>
这是特定于SharePoint的,并且会在执行retrieveListItems函数之前等待SP.JS加载。
这通常是比jQuery的document.ready函数或本机JS的自执行函数更推荐的方法,因为在页面加载后,SharePoint应用程序会在幕后发生许多事情。
希望这有帮助!