javascript - Sharepoint 2010 JSOM getEnumerator 'The collection has not been initialized. It has not been requested...'

标签 javascript sharepoint sharepoint-2010 sharepoint-jsom

我对这个错误或各种解决方案并不陌生,但这一个让我摸不着头脑。我正在使用 JavaScript 对象模型来获取给定文件夹中所有文件的所有列表。我在下面的代码中的 getEnumerator 上收到错误。我已将代码精简到最低限度:

function getFilesInFolder() { 
    var folderServerRelativeUrl = folderPath + ID;
    var context = new SP.ClientContext.get_current();
    var web = context.get_web();
    var list = web.get_lists().getByTitle(documentLibraryName);
    var query = SP.CamlQuery.createAllItemsQuery();
    query.set_folderServerRelativeUrl(folderServerRelativeUrl);

    //Update "web part" link
    $("#doclink").attr('href',folderServerRelativeUrl);
    files = list.getItems(query)
    context.load(files, 'Include(Id)');
    context.executeQueryAsync(Function.createDelegate(this, this.OnSuccess), Function.createDelegate(this, this.OnFailure));
}

function OnSuccess()
{       
//ERROR Next Line:                                   
    var listItemEnumerator = this.files.getEnumerator();
    var table = $("#attachments");


    while (listItemEnumerator.moveNext())  
    {                                    
        console.log("Found a file");
    }                                         
}

代码在文件开头被调用: $(文档).ready(函数(){ //其他代码... ExecuteorDelayUntilScriptLoaded(getFilesInFolder,"sp.js"); });

我已经尝试了很多变体,并且它曾经有效(不确定服务器或客户端发生了什么变化)。

最佳答案

我尝试了你的代码,因为我看不到任何明显的错误,并且它有效。 我对folderServerRelativeUrl进行了硬编码,因为它在瑞典语中工作: “/sites/intranet/dokument”是我的根网站和“Documents”文件夹。

您可以在浏览器中尝试“sitecollection/_api/web/getFolderByServerRelativeUrl('/path/to/folder/')” 查看您使用的网址是否正确。

您还可以在 onsuccess 中设置一个断点,然后在控制台中查看:files.get_count() 以查看是否有任何结果。

您的负载很好,所以不用担心!

function getFilesInFolder() { 
        var folderServerRelativeUrl = "/sites/intranet/dokument";
        var context = new SP.ClientContext.get_current();
        var web = context.get_web();
        var list = web.get_lists().getByTitle("Dokument");
        var query = SP.CamlQuery.createAllItemsQuery();
        query.set_folderServerRelativeUrl(folderServerRelativeUrl);

        //Update "web part" link
       // $("#doclink").attr('href',folderServerRelativeUrl);
        files = list.getItems(query)
        context.load(files, 'Include(Id)');
        context.executeQueryAsync(Function.createDelegate(this, this.OnSuccess), Function.createDelegate(this, this.OnFailure));
    }

    function OnSuccess()
    {       
    //ERROR Next Line:                                   
        var listItemEnumerator = this.files.getEnumerator();
        var table = $("#attachments");


        while (listItemEnumerator.moveNext())  
        {                                    
            console.log("Found a file");
        }                                         
    }

关于javascript - Sharepoint 2010 JSOM getEnumerator 'The collection has not been initialized. It has not been requested...',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36018690/

相关文章:

javascript - 通过单击关闭菜单本身来关闭菜单

sharepoint - SPListItem.Properties DateTime 字段采用奇怪的十六进制格式

sharepoint 2010 中的身份验证提供程序 'greyed out'(启用匿名访问)

SharePoint:我应该使用列表还是数据库?

sharepoint - 将 Sharepoint 元数据暴露给 Web 服务搜索

Sharepoint 2010 客户端对象模块获取站点 url 列表

c# - SPList.ContentTypesEnabled 和 SPList.AllowContentTypes 之间的区别?

javascript - 淡入/淡出 jquery 列表

javascript - 在与 WebPack 捆绑在一起的 Visual Studio 中调试 JavaScript 代码

javascript - 使用 Jquery 更改我的下拉列表的选定索引