我正在使用jQuery FileTree。通过javascript ajax(旧学校javascript xmlhttp请求,而不是jQuery)上传文件后,我使用以下代码调用fileTree:
$('#jstree').fileTree({
script: '/ajax/file_tree2/' + path,
multiFolder: true,
expandSpeed: 250,
collapseSpeed: 250
});
...它产生了一个很好的图形文件树,我可以点击它(path
变量是新文件夹,用作URI段变量,我只是简单地复制了服务器-side将jQueryFileTree.php代码连接到CodeIgniter控制器类中的公共函数。这是我认为与此问题无关的额外信息,仅供参考。
但是,出于某种原因,当我通过上传新文件进行第二次调用(无需重新加载页面)时,文件树不会更新或刷新。我想在上传不同文件夹的新文件时刷新树结构。
我尝试使用加载程序gif清除#jstree元素本身:
$('#jstree').html('<img src=\"'+$("#base_url").html()+'/assets_/images/loading/loading36.gif\" />');
......甚至只是清除html:
$('#jstree').html('');
我尝试过的命令属于其他窗口小部件类库,例如&#39; destroy&#39;或者&#39;刷新&#39;:
$('#jstree').fileTree.destroy();
$('#jstree').fileTree({
refresh: true,
script: '/ajax/file_tree2/' + path,
multiFolder: true,
expandSpeed: 250,
collapseSpeed: 250
});
这些都不做任何事情或返回js错误。
答案 0 :(得分:1)
我从以下网址下载了v2.1.4(467904a3ab5c13df094ffe01ddb0d0fea24c5d6a)的原始来源和修改后的第203行:
if (!data) {
到
if (!data || (Object.prototype.toString.call(args) === '[object Object]' && args.reload)) {
现在,如果我想重新加载fileTree,我只需在arguments数组中传递“reload:true”。