使用Javascript显示共享点库项
Display sharepoint library items with Javascript
我有3个库,我想显示库项的名称。如果我只想显示一个库的项目,一切都可以,但如果我要查找两个或多个库的项,它仍然只显示一个图书馆的项目。我的代码出了什么问题?
<p id="AInfo">library A Items</p>
<p id="BInfo">library B Items</p>
<p id="CInfo">library C Items</p>
<script type="text/javascript">
jQuery(document).ready(function(){ExecuteOrDelayUntilScriptLoaded(fill, "sp.js"); });
var siteUrl = '/Example/test/';
liblist = new Array("A", "B", "C"); //list of the libraries
var i=0;
var lib;
function fill(){
while (i<3){
lib = liblist[i];
alert(lib);
retrieveListItemsInclude();
i++;
}
}
function retrieveListItemsInclude() {
var clientContext = new SP.ClientContext(siteUrl);
var oList = clientContext.get_web().get_lists().getByTitle(lib);
var camlQuery = new SP.CamlQuery();
camlQuery.set_viewXml('<View><RowLimit>100</RowLimit></View>');
this.collListItem = oList.getItems(camlQuery);
clientContext.load(collListItem, 'Include(Id, DisplayName, HasUniqueRoleAssignments)');
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 += oListItem.get_displayName()+ '<br>';
}
var x = listItemInfo.toString();
document.getElementById(lib+"Info").innerHTML = x;
}
function onQueryFailed(sender, args) {
var x = 'Request failed. ' + args.get_message() + ''n' + args.get_stackTrace();
document.getElementById(lib+"Info").innerHTML = x;
}
</script>
我认为您需要等待第一个请求完成后再执行第二个请求。类似的东西(但代码很脏,因为你应该避免全局变量…)
<p id="AInfo">library A Items</p>
<p id="BInfo">library B Items</p>
<p id="CInfo">library C Items</p>
<script type="text/javascript">
jQuery(document).ready(function(){ExecuteOrDelayUntilScriptLoaded(fill, "sp.js"); });
var siteUrl = '/Example/test/';
liblist = new Array("A", "B", "C"); //list of the libraries
var i=0;
var lib = liblist[i];
retrieveListItemsInclude();
function retrieveListItemsInclude() {
var clientContext = new SP.ClientContext(siteUrl);
var oList = clientContext.get_web().get_lists().getByTitle(lib);
var camlQuery = new SP.CamlQuery();
camlQuery.set_viewXml('<View><RowLimit>100</RowLimit></View>');
this.collListItem = oList.getItems(camlQuery);
clientContext.load(collListItem, 'Include(Id, DisplayName, HasUniqueRoleAssignments)');
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 += oListItem.get_displayName()+ '<br>';
}
var x = listItemInfo.toString();
document.getElementById(lib+"Info").innerHTML = x;
if (++i<3) {
lib = liblist[i];
retrieveListItemsInclude()
}
}
function onQueryFailed(sender, args) {
var x = 'Request failed. ' + args.get_message() + ''n' + args.get_stackTrace();
document.getElementById(lib+"Info").innerHTML = x;
}
</script>
您可以创建.ASHX web服务并将其部署到SharePoint Server上。然后,您可以使用REST和JSON从JavaScript中使用HttpRequest查询它。
http://msdn.microsoft.com/en-us/library/bb457204(v=office.12).aspx
相关文章:
- 通过javascript/html访问twitter共享iframe
- 在Javascript服务器/客户端中共享对象定义
- Javascript创建函数,以便在其他函数之间共享变量
- 在javascript客户端和java服务器之间共享Google Analytics ClientID
- 在新表单上使用JavaScript创建多个共享点项目,但将下一页加载延迟到全部创建
- 关于node.js/javascript在文件之间共享变量
- Javascript ES6共享类变量
- 具有不同函数调用定义的共享JavaScript文件
- 共享javascript和样式表文件
- 可以在 iframe 之间共享 JavaScript 导入
- 在父帧和子帧之间共享 javascript 包含文件
- 共享 JavaScript sdk 在 IE7 和 IE8 上没有弹出
- 共享javascript属性
- 在多个nashorn脚本引擎之间共享JavaScript数组和对象
- 测试深度相等*与共享*JavaScript对象
- 在Rails中共享Javascript和Sass数据的最佳方式
- 存储,编辑和共享javascript变量值
- 在服务器和客户端之间共享JavaScript模型代码,这种方法有效吗
- Websphere Liberty 中的共享 Javascript 库
- 如何在Adobe AIR中的不同页面之间共享javascript对象