1

我正在尝试从 SharePoint 2010 列表中获取值。列表名称为“servername/sites/dev/Lists/SitesList/AllItems.aspx”的 URL 中的“SitesList”。我想在警报消息“标题”和“URL”上打印的列。

一旦我运行了所有内容,页面就会加载,但什么也没有发生。我可以看到我的 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>
4

1 回答 1

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 应用程序会在幕后发生许多事情。

希望这可以帮助!

于 2013-07-16T04:11:22.213 回答