Javascript CSOM异步问题 [英] Javascript CSOM asynchronous issue

查看:75
本文介绍了Javascript CSOM异步问题的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

大家好,

美好的一天!

我正在尝试使用CSOM javascript获取3个子站点的信息.

每个子网站都有一个列表,称为具有相同字段的互动".

我正在尝试从每个列表中获取一条最近修改的记录,并以表格的形式显示在顶级站点上.

由于JavaScript的异步特性,以下代码始终仅显示最后一个子站点列表信息

我在此处提供了代码,请建议对以下代码进行必要的更改
-------------------------------------------------- -------------------------------------------------- --------------

< script src =" https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"</script>
< input type ='button'id ='id1'value ='click'onClick =" GetListItem();" />
< style>
桌子,th,td {
   边框:1像素纯黑色;
}
th,td {
   内边距:5px;
    text-align:向左;
}

</style>
< table id ="mytab" border ="1">
  < tr>

  </tr>
</table>
 
< script type ="文本/javascript">
var context;
var web;
var list;
var查询;
var个项目;
函数GetListItem()
{
var suburl = ["https://chaituslove.sharepoint.com/sites/WorkflowTest/sri/","https://chaituslove.sharepoint .com/sites/WorkflowTest/chaitu/," https://chaituslove.sharepoint.com/sites/WorkflowTest/krish/];

var i;
$(#mytab").append(" Title 日期;< city//th</tr");  
for(i = 0; i< suburl.length; i ++)
{
context = new SP.ClientContext(suburl [i]);
web = context.get_web();
list = web.get_lists().getByTitle("engagement");
query = new SP.CamlQuery();
    query.set_viewXml('< View>< Query>< OrderBy>< FieldRef Name ="Modified" Ascending ="FALSE"/> ;</OrderBy></Query>< RowLimit> 1</RowLimit></View>');
    items = list.getItems(query);
context.load(items);

        context.executeQueryAsync(onGetListNameSuccess,onGetListNameFail);



}
}
函数onGetListNameSuccess(sender,args)

 
                                                                
      var listEnumerator = items.getEnumerator();

      while(listEnumerator.moveNext())
      { 
    console.log(listEnumerator.get_current().get_item('Title'));
     
         //警报(listEnumerator.get_current().get_item('Title'));

          var t = listEnumerator.get_current().get_item('Title');
  var u = listEnumerator.get_current().get_item('date');
  var v = listEnumerator.get_current().get_item('city');
$(#mytab").append('< tr>< td>'+ t +'</td>< td> ;'+ u +'</td>< td>'+ v +'</td</tr>');

      }   
}                
函数onGetListNameFail(sender,args){
    alert('无法获取列表项.错误:'+ args.get_message());
}

</script>



-------------------------------------------------- -------------------------------------------------- --------------

                                                                                        
问候,
柴坦亚.


解决方案

您可以尝试下面共享的脚本线程,它与您的要求类似.只需通过您的自定义查询更新查询即可.

 var spCamlQuery = new SP.CamlQuery();
spCamlQuery.set_viewXml('< View>< Query>< OrderBy>< FieldRef Name ="Modified" Ascending ="FALSE"//</OrderBy<</Query>< RowLimit> 1 ;/RowLimit></View>'); 

https://social.msdn.microsoft.com/Forums/office/en-US/691a9ed2-4df3-4e05 -bcc6-628beb6ed26a/json-实现用于获取不同的子站点列表数据并以表格格式表示?forum = sharepointcustomizationprevious

 


  </tr>
</table>
 
<script type="text/javascript">
var context;
var web;
var list;
var query;
var items;
function GetListItem()
{
var suburl=["https://chaituslove.sharepoint.com/sites/WorkflowTest/sri/","https://chaituslove.sharepoint.com/sites/WorkflowTest/chaitu/","https://chaituslove.sharepoint.com/sites/WorkflowTest/krish/"];

var i;
$("#mytab").append("<tr><th>Title</th><th>date</th><th>city</th></tr>");  
for(i=0;i<suburl.length;i++)
{
context = new SP.ClientContext(suburl[i]);
web= context.get_web();
list = web.get_lists().getByTitle("engagement");
query = new SP.CamlQuery();
    query.set_viewXml('<View><Query><OrderBy><FieldRef Name="Modified" Ascending="FALSE"/></OrderBy></Query><RowLimit>1</RowLimit></View>');
    items = list.getItems(query);
context.load(items);

        context.executeQueryAsync(onGetListNameSuccess, onGetListNameFail);



}
}
function onGetListNameSuccess(sender, args)

 
                                                                
      var listEnumerator = items.getEnumerator();

      while(listEnumerator.moveNext())
      { 
    console.log(listEnumerator.get_current().get_item('Title'));
     
         //alert(listEnumerator.get_current().get_item('Title'));

          var t=listEnumerator.get_current().get_item('Title');
 var u=listEnumerator.get_current().get_item('date');
 var v=listEnumerator.get_current().get_item('city');
 $("#mytab").append('<tr><td>'+t+'</td><td>'+u+'</td><td>'+v+'</td></tr>');

      }    
}                 
function onGetListNameFail(sender, args) {
    alert('Failed to get list items. Error:' + args.get_message());
}

</script>



------------------------------------------------------------------------------------------------------------------

                                                                                        
Regards,
Chaitanya.


解决方案

Hi,

You could try the script I shared in below thread, it’s similar requirement as you. Just update the query by your custom query.

var spCamlQuery = new SP.CamlQuery();
spCamlQuery.set_viewXml('<View><Query><OrderBy><FieldRef Name="Modified" Ascending="FALSE"/></OrderBy></Query><RowLimit>1</RowLimit></View>');

https://social.msdn.microsoft.com/Forums/office/en-US/691a9ed2-4df3-4e05-bcc6-628beb6ed26a/json-implementation-for-fetching-different-subsites-list-data-and-representing-in-tabular-format?forum=sharepointcustomizationprevious

 

Best Regards,

Lee


这篇关于Javascript CSOM异步问题的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆