GVKun编程网logo

jsTree – 通过ajax按需加载子节点

5

对于jsTree–通过ajax按需加载子节点感兴趣的读者,本文将会是一篇不错的选择,并为您提供关于Ajax按需读取数据生成下级菜单、ASP.NETTreeView并按需加载数据、Bootstrap3–

对于jsTree – 通过ajax按需加载子节点感兴趣的读者,本文将会是一篇不错的选择,并为您提供关于Ajax按需读取数据生成下级菜单、ASP.NET TreeView并按需加载数据、Bootstrap 3 – 如何通过AJAX在模态体中加载内容?、Bootstrap 3-如何通过AJAX在模态主体中加载内容?的有用信息。

本文目录一览:

jsTree – 通过ajax按需加载子节点

jsTree – 通过ajax按需加载子节点

我试图得到一个jsTree工作与按需加载子节点。我的代码是这样:
jQuery('#introspection_tree').jstree({ 
        "json_data" : {
            "ajax" : {
                url : "http://localhost/introspection/introspection/product"
            }
    },"plugins" : [ "themes","json_data","ui" ]
    });

从调用返回的json是

[
  {
    "data": "Kit 1","attr": {
      "id": "1"
    },"children": [
      [
        {
          "data": "Hardware","attr": {
            "id": "2"
          },"children": [

          ]
        }
      ],[
        {
          "data": "Software","attr": {
            "id": "3"
          },"children": [

          ]
        }
      ]
    ]
  }
  .....
]

每个元素可能有很多孩子,树会是大的。目前,这是一次加载整个树,这可能需要一些时间。当用户打开子节点时,我需要做什么来实现按需加载?

提前致谢。

爱尔兰人指出我的方向是正确的,但不能完全解决我的问题。我用她的答案挑出来,想出了这个。为了清楚起见,仅使用两个不同的服务器功能。第一个列出所有顶级产品,第二个列出给定productid的所有子项:
jQuery("#introspection_tree").jstree({
    "plugins" : ["themes","ui"],"json_data" : {
        "ajax" : {
            "type": 'GET',"url": function (node) {
                var nodeId = "";
                var url = ""
                if (node == -1)
                {
                    url = "http://localhost/introspection/introspection/product/";
                }
                else
                {
                    nodeId = node.attr('id');
                    url = "http://localhost/introspection/introspection/children/" + nodeId;
                }

                return url;
            },"success": function (new_data) {
                return new_data;
            }
        }
    }
});

从函数返回的json数据是这样的(注意每个节点中的state = closed):

[
  {
    "data": "Kit 1","state": "closed"
  },{
    "data": "KPCM 049","attr": {
      "id": "4"
    },{
    "data": "Linux BSP","attr": {
      "id": "8"
    },"state": "closed"
  }
]

不需要静态数据,树现在在每个级别上是完全动态的。

Ajax按需读取数据生成下级菜单

Ajax按需读取数据生成下级菜单

jilian.htm
复制代码 代码如下:

<script language="javascript">
var http_request=false;
function send_request(url){//初始化,指定处理函数,发送请求的函数
http_request=false;
//开始初始化XMLHttpRequest对象
if(window.XMLHttpRequest){//Mozilla浏览器
http_request=new XMLHttpRequest();
if(http_request.overrideMimeType){//设置MIME类型
http_request.overrideMimeType("text/html");
}
}
else if(window.ActiveXObject){//IE浏览器
try{
http_request=new ActiveXObject("Xsxml2.XMLHTTP");
http_request.setRequestHeader("Content-Type","text/xml");
http_request.setRequestHeader("Content-Type","gb2312");
}
catch(e){
try{
http_request=new ActiveXObject("Microsoft.XMLHTTP");
http_request.setRequestHeader("Content-Type","text/xml");
http_request.setRequestHeader("Content-Type","gb2312");
}
catch(e){
}
}
}
if(!http_request){//异常,创建对象实例失败
window.alert("不能创建XMLHttpRequest对象实例");
return false;
}
http_request.onreadystatechange=processRequest;
//确定发送请求的方式和URL以及是否同步执行下段代码
http_request.open("GET",url,true);
http_request.send(null);
}
//处理返回信息的函数
function processRequest(){
if(http_request.readyState==4){//判断对象状态
if(http_request.status==200){//信息已经成功返回,开始处理信息
document.getElementById(currentPos).innerHTML=http_request.responseText;
}
else{//页面不正常
alert("您所请求的页面有异常");
}
}
}
function showRoles(obj){
document.getElementById(obj).parentNode.style.display="";
document.getElementById(obj).innerHTML="正在读取数据..."
currentPos=obj;
send_request("jilian_data.asp?playPos="+obj);
}
</script>

<table width="200" border="0" cellspacing="0" cellpadding="0">
<tr>
<td height="20">
<a href="javascript:void(0)" onclick="showRoles(''pos_1'')">经理室
</a>
</td>
</tr>
<tr >
<td height="20" id="pos_1">&nbsp;</td>
</tr>
<tr>
<td height="20">
<a href="javascript:void(0)" onclick="showRoles(''pos_2'')">开发部</a>
</td>
</tr>
<tr >
<td id="pos_2" height="20">&nbsp;</td>
</tr>
</td>
</table>

jilian_data.asp
复制代码 代码如下:

<%@LANGUAGE="VBSCRIPT" CODEPAGE="936"%>
<%
playPos=request("playPos")
if playPos="pos_1" then
Response.Write("&nbsp;&nbsp;jingli<br>&nbsp;&nbsp;副总经理")
end if
if playPos="pos_2" then
Response.Write("&nbsp;&nbsp;总工程师<br>&nbsp;&nbsp;软件工程师")
end if
%>



ASP.NET TreeView并按需加载数据

ASP.NET TreeView并按需加载数据

有没有办法强制TreeView按需加载数据?另一方面,TreeView必须仅在要扩展节点时加载数据. TreeView绑定到实现IHierarchyData的数据集合.

解决方法

做这个诀窍的三个步骤:

1 – 将TreeView.ExpandDepth设置为0.这消除了TreeView中添加的TreeNode对象的扩展,并显示了将TreeNode.Populateondemand属性设置为true的每个TreeNode旁边的扩展符号[].

2-为每个分支TreeNode设置TreeNode.PopulateOnDemand为True.当TreeNode.ChildNodes集合为空时,扩展符号[]将仅显示在TreeNode.Populateondemand属性设置为true的TreeNode对象旁边.

3-处理TreeView.TreeNodePopulate事件以在扩展时对分支节点进行打包.当TreeNode(TreeNode.Populateondemand设置为true)在TreeView.TreeNodeExpanded事件被触发之前被扩展时,将触发此事件.

Bootstrap 3 – 如何通过AJAX在模态体中加载内容?

Bootstrap 3 – 如何通过AJAX在模态体中加载内容?

正如你可以看到 here,我有一个按钮,启动模态。设置按钮的href url这个url通过Bootstrap 3自动加载到modal。
事实是这个页面被加载到模态根(如 bootstrap 3 documentation for modals usage中所述)。我想把它加载到模态体。

有没有办法通过属性(不是javascript)?还是什么是最自动的做法呢?

P.S。我记得在Bootstrap 2的内容加载在身体,而不是根。

解决方法

检查 this SO answer出。

它看起来像唯一的方式是提供整个模态结构与你的ajax响应。

您可以从引导程序source code检查,加载函数绑定到根元素。

如果你不能修改ajax响应,一个简单的解决方法可能是显式调用$(..)。modal(..)插件在你的body元素,即使它可能会打破show / hide功能根元素。

Bootstrap 3-如何通过AJAX在模态主体中加载内容?

Bootstrap 3-如何通过AJAX在模态主体中加载内容?

如您在这里看到的,我有一个启动模态的按钮。设置按钮的href网址,该网址会由Bootstrap
3自动加载到模式中。事实是,此页面已加载到模式根中(如引导3文档中有关模式使用的内容所述)。我想将其加载到模态主体中。

有没有一种方法可以通过属性(不是javascript)做到这一点?或最自动的方法是什么?

PS:我记得在Bootstrap 2中,内容已加载到主体中,而不是根中。

关于jsTree – 通过ajax按需加载子节点的介绍现已完结,谢谢您的耐心阅读,如果想了解更多关于Ajax按需读取数据生成下级菜单、ASP.NET TreeView并按需加载数据、Bootstrap 3 – 如何通过AJAX在模态体中加载内容?、Bootstrap 3-如何通过AJAX在模态主体中加载内容?的相关知识,请在本站寻找。

本文标签:

上一篇基于RT-Thread在STM32H7上移植LWIP(一)(rtthread移植到stm32)

下一篇ajax html对xml/json响应 – 性能或其他原因(ajax请求xml)