2013-07-16 56 views
1

我試圖從SharePoint 2010列表獲取值。列表名稱是「站點列表」,位於「servername/sites/dev/Lists/SitesList/AllItems.aspx」的URL處。我想在警告消息「標題」和「URL」上打印的列。查詢SharePoint列表使用JavaScript

有一次,我跑了一切,在頁面加載,但沒有任何反應都沒有。我可以看到我的Web部件在那裏,我甚至將代碼切換到一個簡單的警告消息,它的工作原理。我究竟做錯了什麼?

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

回答

1

它看起來像你從來沒有真正觸發retrieveListItems功能。

嘗試加入這個你腳本的頂部,var siteUrl後:

<script type="text/javascript"> 
var siteUrl = '/sites/dev/'; 

ExecuteOrDelayUntilScriptLoaded(retrieveListItems, "sp.js"); 

function retrieveListItems() { 
... 
} 
... 
</script> 

這是特定於SharePoint並等待SP.JS來執行retrieveListItems功能之前加載。

它通常比jQuery的的document.ready功能,或本機JS的自我執行功能的更多建議的做法爲很多事情的發生是由於頁面加載後的SharePoint應用程序在幕後。

希望這會有所幫助!

+1

這做到了!謝謝!!!! – mwilson