Can';t在javascript客户端对象模型的文件夹中从SharePoint中的文档检索元数据

Can';t在javascript客户端对象模型的文件夹中从SharePoint中的文档检索元数据,javascript,sharepoint,sharepoint-online,csom,sharepoint-object-model,Javascript,Sharepoint,Sharepoint Online,Csom,Sharepoint Object Model,当包含元数据的文档不在文件夹中时,下面的代码对我来说工作正常。一旦文档被放入文档库中的文件夹,它就会在之后停止工作,而(enumerator.moveNext()){我已经在代码中的不同行中放置了console.log,这就是我停止接收响应的点 我已经创建了一个名为viewitem.aspx的新dispform.aspx,这个js文件链接到它以提取元数据并在页面上的不同div中显示它 代码如下: function getBody() { var context = new SP.Clie

当包含元数据的文档不在文件夹中时,下面的代码对我来说工作正常。一旦文档被放入文档库中的文件夹,它就会在
之后停止工作,而(enumerator.moveNext()){
我已经在代码中的不同行中放置了console.log,这就是我停止接收响应的点

我已经创建了一个名为viewitem.aspx的新dispform.aspx,这个js文件链接到它以提取元数据并在页面上的不同div中显示它

代码如下:

function getBody() {
    var context = new SP.ClientContext("https://xxx.sharepoint.com/sites/xxx");
    var list = context.get_web().get_lists().getByTitle('Docs');
    JSRequest.EnsureSetup();
    var listItemId = GetUrlKeyValue("ID");
    var item = new SP.CamlQuery();
    item.set_viewXml("<View><Query><Where><Eq><FieldRef Name='ID'/><Value Type='Number'>" + listItemId + "</Value></Eq></Where></Query></View>");
    returnedItemsBE1 = list.getItems(item);
    context.load(returnedItemsBE1);
    context.executeQueryAsync(onSucceededCallbackBE1);
        }
        function onSucceededCallbackBE1() {
            var enumerator = returnedItemsBE1.getEnumerator();
            while (enumerator.moveNext()) {
                var listItem = enumerator.get_current();
                var tmbod = listItem.get_item('TmBody');
                var tmfile = listItem.get_item('TmAttachmentTitle');
                var tmId = listItem.get_item('TmTransID');
                var tmfileurl = 'https://xxx.sharepoint.com/sites/xxx/Docs/'+tmId+'_'+tmfile;
                document.getElementById("fileLink").href = tmfileurl;
                document.getElementById("fileLink").innerText = tmfile ;                                    
                var bdiv = document.getElementById("bodyDiv");
                bdiv.innerHTML = tmbod;
                    }                                           
                }                               
函数getBody(){ var context=new SP.ClientContext(“https://xxx.sharepoint.com/sites/xxx"); var list=context.get_web().get_list().getByTitle('Docs'); JSRequest.EnsureSetup(); var listItemId=GetUrlKeyValue(“ID”); var item=new SP.CamlQuery(); item.set_viewXml(“+listItemId+”); returnedItemsBE1=list.getItems(项目); 加载(returnedItemsBE1); executeQueryAsync(onSucceededCallbackBE1); } 函数onSucceedCallbackbe1(){ var enumerator=returnedItemsBE1.getEnumerator(); while(枚举数.moveNext()){ var listItem=enumerator.get_current(); var tmbod=listItem.get_item('TmBody'); var tmfile=listItem.get_item('TmAttachmentTitle'); var tmId=listItem.get_item('TmTransID'); var tmfileurl=https://xxx.sharepoint.com/sites/xxx/Docs/'+tmId+'''+tmId文件; document.getElementById(“fileLink”).href=tmfileurl; document.getElementById(“fileLink”).innerText=tmfile; var bdiv=document.getElementById(“bodyDiv”); bdiv.innerHTML=tmbod; } } `

我正在使用SharePoint 2013 online,我不知道文件夹中的项目会有什么不同,URL会更改,但它仍然包含文件ID等


我已经搜索了又搜索,但找不到任何与此相关的参考,希望您能提供帮助!

请尝试在您的
视图
标记中使用
Scope='Recursive'
。否则,它将只获取给定目录中的文件

item.set_viewXml("<View Scope='Recursive'><Query><Where><Eq><FieldRef Name='ID'/><Value Type='Number'>" + listItemId + "</Value></Eq></Where></Query></View>");
item.set_viewXml(“+listItemId+”);
有四个视图范围:

  • 默认值(未指定范围):检索当前文件夹中的所有文件

  • 全部:检索当前文件夹中的文件和文件夹

  • 递归:检索当前文件夹及其子文件夹及其子文件夹等中的文件

  • RecursiveAll:与Recursive相同,但也检索子文件夹


如果视觉解释更适合您,我会发现这一点。

尝试在
视图
标记中使用
Scope='Recursive'
。否则,它将只获取给定目录中的文件

item.set_viewXml("<View Scope='Recursive'><Query><Where><Eq><FieldRef Name='ID'/><Value Type='Number'>" + listItemId + "</Value></Eq></Where></Query></View>");
item.set_viewXml(“+listItemId+”);
有四个视图范围:

  • 默认值(未指定范围):检索当前文件夹中的所有文件

  • 全部:检索当前文件夹中的文件和文件夹

  • 递归:检索当前文件夹及其子文件夹及其子文件夹等中的文件

  • RecursiveAll:与Recursive相同,但也检索子文件夹

如果视觉解释对你更有效,我发现这一点