jstree 3.0.2 动态树总是从缓存中加载数据,而不是重新调用服务器
Posted
技术标签:
【中文标题】jstree 3.0.2 动态树总是从缓存中加载数据,而不是重新调用服务器【英文标题】:jstree 3.0.2 dynamic tree always loading data from cache instead of making a fresh call to server 【发布时间】:2014-10-13 21:22:55 【问题描述】:我有一个 jstree。在加载页面时,jstree 会从服务器很好地填充,因为它对服务器进行了新的调用,但是之后每当我刷新页面时,它总是会从缓存中获取数据而不是调用服务器,因此总是会获取旧的要填充的数据。我正在使用 jstree 3.0.2 版本。以下是在页面加载时生成 jstree 的代码。
$('#tree').jstree(
'core':
data:
'url':'getjstree' // this is the url which will get the json data from the server
);
我们如何解决这个问题以在每次调用时获取新数据,我之前想到的一个解决方案是通过调用来硬刷新的 javascript 代码
location.reload(true);
但这确实刷新了 json 数据,但进入了递归调用,从而挂起了页面。 请帮助我们如何解决这个问题。
【问题讨论】:
【参考方案1】:JSTree 插件使用键“jstree”将树状态保存在浏览器的 localStorage 中。因此,在调用 jstree 之前,您应该从 localStorage 中删除该密钥,如下所示:
//Removes jstree cached state from localStorage
localStorage.removeItem('jstree');
$('#tree').jstree(
'core':
data:
'url':'getjstree'
);
【讨论】:
这适用于最新版本的 jstree @good work #Andre【参考方案2】:用这个解决了问题
$('#tree').jstree(
'core':
data:
'cache':false,
'url':'getjstree' // this is the url which will get the json data from the server
);
【讨论】:
@Sam,看看我关于清理 localStorage 的回答。 奇怪...这个解决方案对我有用,而 @AndréBonna 的解决方案没有。【参考方案3】:我只是在网址末尾添加了一个随机参数...就像这样
'url' : function(node)
return "/myrequestpath?randParam="+getRandParam();
我将 getRandParam 定义为返回 1 到 1000 之间的随机数...如果我使用时间戳,它可能会运行得更好并且更健壮,但这对我有用。请注意,我使用了 url 的函数版本,但它是相同的想法(函数每次都有效,但 url 可能只有在我不确定时才设置)。
【讨论】:
顺便说一句,我认为 AJAX 请求的问题比 JSTree 的问题更大。它显示在 JSTree 上,但真正的问题在于 AJAX。看看***.com/questions/367786/…【参考方案4】:清除本地存储在 2021 年仍然有效
【讨论】:
这个“新”答案所做的唯一一件事就是重复一半其他答案已经说过的话,包括accepted answer。以上是关于jstree 3.0.2 动态树总是从缓存中加载数据,而不是重新调用服务器的主要内容,如果未能解决你的问题,请参考以下文章
jstree做动态树,json格式传输,存储过程获得datatable之类,不知道如何把datatable转换为需要的json数据格式