Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery plugins 如何在jsTree中调用json ajax_Jquery Plugins_Jquery_Jstree - Fatal编程技术网

Jquery plugins 如何在jsTree中调用json ajax

Jquery plugins 如何在jsTree中调用json ajax,jquery-plugins,jquery,jstree,Jquery Plugins,Jquery,Jstree,我想调用ajax来获取结果节点的数据。在我的示例代码中,进行了ajax调用,但是服务器没有返回任何东西(使用firebug测试),但是如果我在web浏览器中使用相同的url,我可以保存json文件 我的问题是: 如何使ajax调用工作,以便在jsTree中显示返回值?它工作得很好-使用数据和ajax配置选项搜索 如何传递ajax调用参数 一个是父/父名称(basics用于第一个结果节点) 第二个是父节点的名称(第一个结果节点的登录名) 请参阅下面的我的代码或使用 jsTree与ajax

我想调用ajax来获取
结果
节点的数据。在我的示例代码中,进行了ajax调用,但是服务器没有返回任何东西(使用firebug测试),但是如果我在web浏览器中使用相同的url,我可以保存json文件

我的问题是:

  • 如何使ajax调用工作,以便在jsTree中显示返回值?它工作得很好-使用数据和ajax配置选项搜索
  • 如何传递ajax调用参数
    • 一个是父/父名称(basics用于第一个结果节点)
    • 第二个是父节点的名称(第一个结果节点的登录名)
请参阅下面的我的代码或使用


jsTree与ajax
数据=[
{
“数据”:“基础”,
“状态”:“已关闭”,
“儿童”:[{
“数据”:“登录”,
“状态”:“已关闭”,
“子项”:[“登录”,“数据”:“结果”,“状态”:“关闭”}]
}   , 
{
“数据”:“基础”,
“状态”:“已关闭”,
“子项”:[“登录”、“某物”、“数据”:“结果”、“状态”:“关闭”}]
}    ]
},
{
“数据”:“全部”,
“状态”:“已关闭”,
“儿童”:[{
“数据”:“添加客户”,
“状态”:“已关闭”,
“子项”:[“登录”,“添加”,“数据”:“结果”,“状态”:“关闭”}]
}   ]
}
]
$(函数(){
$(“#jstree”).jstree({
“json_数据”:{
“数据”:数据,
“ajax”:{“url”:”http://www.jstree.com/static/v.1.0pre/_docs/_json_data.json" }
},
“插件”:[“主题”,“json_数据”]
});
});
更新1
即使我将jstree.com中的示例代码复制到其中,也不会起作用。我想我在某处错过了什么

尽量不要从您的服务器向另一台服务器进行Ajax调用-这将导致跨域安全异常。有很多解决方法(JSONP),但只从您自己的服务器请求数据更简单

整理好ajax请求后,您可能希望向“结果”节点添加一些属性,以便ajax具有一些可以挂接的数据,例如ID。比如:

"data": "results", "state": "closed", "attr": { "id": "node-123" }
然后可以为ajax数据选项添加处理程序:

"ajax": {
    "url": "/my/local/json/",
    "data": function(n) {
        // get parent / grandparent node
        var lists = $(n).parents('ul');
        var p = $(lists[0]).prev('a');
        var gp = $(lists[1]).prev('a');
        // the result is fed to the AJAX request 'data' option
        return {
            "parent": $.trim(p.text()),
            "grandparent": $.trim(gp.text()),
            "id": n.attr ? n.attr("id").replace("node-", "") : 1,

        };
    }
}
这将导致Ajax请求,例如:

希望有帮助


编辑:这里有一个更新的JSFIDE给你:

知道为什么,当我使用
jsTreeGrid
时,你的代码没有给我父母和祖父母的名字吗?这是因为网格在A标记和UL标记之间添加了一些div。尝试对两个变量p&gp使用.sides('a')而不是.prev('a')。你是对的。一切正常。非常感谢你的帮助。我不明白这个
“id”:n.attr?n、 属性(“id”)。替换(“节点-”,“”):1,
,您能解释一下吗?我认为您应该检查属性是否存在,然后修改它,否则设置为1。但我对此并不确定,它不是在测试布尔值,而是在测试n.attr是否为null或未定义,因此只要它返回某个值(在本例中为函数),它就会传递条件。基本上,这是为了确保当您调用n.attr(“id”)时,它不会爆炸。
"ajax": {
    "url": "/my/local/json/",
    "data": function(n) {
        // get parent / grandparent node
        var lists = $(n).parents('ul');
        var p = $(lists[0]).prev('a');
        var gp = $(lists[1]).prev('a');
        // the result is fed to the AJAX request 'data' option
        return {
            "parent": $.trim(p.text()),
            "grandparent": $.trim(gp.text()),
            "id": n.attr ? n.attr("id").replace("node-", "") : 1,

        };
    }
}