首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何处理对无子节点的递归AJAX请求?

如何处理对无子节点的递归AJAX请求?
EN

Stack Overflow用户
提问于 2011-05-23 10:26:16
回答 5查看 3.4K关注 0票数 5

问题:

据提交人说,jsTree文档

当打开一个关闭的节点(没有加载子节点)时,会发出AJAX请求。

如何配置jsTree以处理为每个空/无子节点发出的这些AJAX数据请求?我希望我的空节点保持空(或者没有孩子)!

给予(简化):

JSON数据容器(data.json)

代码语言:javascript
复制
{
    "data" : "Root node with no children",
    "children" : []
}

jsTree配置

代码语言:javascript
复制
{
    "json_data" : {
        "ajax" : {
            "url"        : "data.json",
            "type"       : "GET",
            "dataType"   : "json",
            "dataFilter" : function (data, type) {
                //some filtering function
            }
        }
    },
    "plugin" : ["json_data"]
}
EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2011-08-11 05:23:44

将叶节点的状态标记为“叶”。这应该能解决问题。

票数 11
EN

Stack Overflow用户

发布于 2014-05-09 09:20:37

我在state=树的无子节点上设置属性“关闭”时遇到了这个问题。删除state属性解决了这个问题。

票数 1
EN

Stack Overflow用户

发布于 2011-05-24 07:28:02

几周前我也有过类似的问题。我在"url“字段中进行了函数调用,这最终导致java代码基于SQL查询生成JSON字符串。因此,当我单击一个无子的封闭节点时,该函数再次被调用,从而生成一棵无穷无尽的树。

我解决这个问题的方法是:

代码语言:javascript
复制
"json_data" : {
        "ajax" : {
            "url" : "getAreaTree?treeType=Areas&ownerPhone=<%=webSessionObject.getUserPhoneNum()%>",
            "data" : function (n) {
                    return { id : n.attr ? n.attr("id") : 0 };
                }
        }
    },

"data“中定义的函数的结果将作为参数添加到"url”函数中。然后,我可以检查参数是0(初始加载)还是1(我的根的id )还是其他什么。

如果这对你不起作用,也许你可以试试这样的方法:

代码语言:javascript
复制
.bind("before.jstree",function(event,data){
    if(data.func === "create"){
                  var foo = true;
        data.inst._get_node(null, true).each(function () {

            if(this.id!=rootId && this.id!=0){
                foo = false;    
        })
        if(!foo){
            event.stopImmediatePropagation();
            return false;
        }
    }       
})

但我不太确定这是否行得通。"before.jstree“在所有事件发生之前都会触发。我正在检查即将触发的函数是否为"create",如果是,则检查所选节点的id。如果不是根的id或0(初始加载),则停止create函数。

我在不同的情况下使用了类似的结构,所以类似的东西应该可以工作。这可能是“创建”事件不是您应该绑定到的东西。你可以把它改成

代码语言:javascript
复制
.bind("before.jstree",function(event,data){
            console.log(data.func)
    if(data.func === "create"){

查看调用了哪些函数。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6095929

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档