0

我正在使用jQuery FileTree。通过 javascript ajax(旧式 javascript xmlhttp 请求,而不是 jQuery)上传文件后,我使用以下代码调用 fileTree:

$('#jstree').fileTree({
            script: '/ajax/file_tree2/' + path,
            multiFolder: true,
            expandSpeed: 250,
            collapseSpeed: 250
        });

...它生成了一个漂亮的图形文件树,我可以在其中单击(path变量是新文件夹,用作 URI 段变量,我只是将服务器端连接器 jQueryFileTree.php 代码复制到公共CodeIgniter 控制器类中的函数。这是我认为与问题无关的额外信息,仅供参考)。

但是,由于某种原因,当我通过上传新文件(无需重新加载页面)进行第二次调用时,文件树不会更新或刷新。当我为不同的文件夹上传新文件时,我想刷新树结构。

我尝试使用加载器 gif 清除 #jstree 元素本身:

$('#jstree').html('<img src=\"'+$("#base_url").html()+'/assets_/images/loading/loading36.gif\" />');

...甚至只是清除 html:

$('#jstree').html('');

我尝试过属于其他小部件类型库的命令,例如“销毁”或“刷新”:

$('#jstree').fileTree.destroy();

$('#jstree').fileTree({
            refresh: true,
            script: '/ajax/file_tree2/' + path,
            multiFolder: true,
            expandSpeed: 250,
            collapseSpeed: 250
        });

这些要么什么都不做,要么返回一个 js 错误。

4

1 回答 1

1

我从以下位置下载了 v2.1.4 (467904a3ab5c13df094ffe01ddb0d0fea24c5d6a) 的原始源代码并修改了第 203 行:

if (!data) {

if (!data || (Object.prototype.toString.call(args) === '[object Object]' && args.reload)) {

现在,如果我想重新加载文件树,我只需在参数数组中传递“reload:true”。

于 2016-11-15T15:48:14.873 回答