最近要做树,用dtree+ajax来实现,结果半天也弄不出来。碰到两个问题:
1、dtree+ajax不刷新
直接用例子程序来做一个静态的树,节点都是自己写的,但是放在getJson里面不能刷新,+号点击没有反应,找了半天,终于找到问题了:
doucument.write(b);
要写成
$("#treeDiv").html(tree.toString());
下面给一个整体的实例。
http://www.cnblogs.com/kenkofox/archive/2011/03/28/1997638.html
(!!!在IE,refreshTree的
getJSON不刷新的问题,参考:http://www.cnblogs.com/kenkofox/archive/2011/04/02/2004101.html)
本来我想使用jsTree或者treeView这种jquery插件的,这些插件虽然功能很强大,但无奈,太花俏了,需要学习的配置很多。
而且对于我的应用来说,并不需要花俏的功能,例如拖拽,双击重命名,右键菜单等。
耗了2天在学习jsTree和treeView,都发现不太适合,索性用最原始的dtree,效果也不错,而且所有代码简单,能够完全掌握在自己控制之下。
废话不说了。在这里分享一下,我用ajax加载dtree的做法,后台servlet提供json格式的tree数据。这个做法应该可以用到做一个系统的导航栏上。
全部代码:ajax,servlet动态加载dtree.rar
HTML:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF8">
<link rel="StyleSheet" href="./dtree/dtree.css" type="text/css" />
<script type="text/javascript" src="./dtree/dtree.js"></script>
<script type="text/javascript" src="./js/jquery-1.5.1.min.js"></script>
<script>
dtreePath = './dtree/'; //我在dtree.js中加了这个变量,便于调整img路径
//需要设置为dtree目录位置,底下有img目录
var tree; //tree必须为全局变量
$(document).ready(function(){
refreshTree();
});
/**
* 点击菜单的操作,在后台Servlet返回的json数据中设置了url为javascript:showFolder(dir)
*/
function showFolder(dir) {
alert(dir);
}
function refreshTree() {
//生成新的树,ajax方式获取最新tree,每个json item表示一个节点
$.getJSON('OnlineFileManagerServlet',function(data){
tree = new dTree('tree'); //参数tree,表示生成的html代码中id的标记,不影响功能
tree.add(0,-1,'网络文件夹'); //树根
//遍历JSON中的每个entry
$.each(data,function(entryIndex,entry){
tree.add(entry['id'], entry['pid'], entry['name'], entry['url']);
});
$("#treeDiv").html(tree.toString());
});
}
</script>
</head>
<body>
<div class="dtree">
<p><a href="javascript: tree.openAll();">open all</a> | <a href="javascript: tree.closeAll();">close all</a></p>
<div id="treeDiv">
</div>
</div>
</body>
</html>
Servlet:(关于json,参考:http://www.cnblogs.com/kenkofox/archive/2011/03/25/1995436.html)
protected void processRequest(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setCharacterEncoding("UTF-8");
PrintWriter out = response.getWriter();
try {
//创建json数据
JSONArray tree = new JSONArray();
JSONObject node1 = new JSONObject();
node1.put("id", "1");
node1.put("pid", "0");
node1.put("name", "金属产品检验报告");
node1.put("url", "javascript:showFolder('" + "abc" + "')");
JSONObject node2 = new JSONObject();
node2.put("id", "2");
node2.put("pid", "0");
node2.put("name", "塑料产品检验报告");
node2.put("url", "javascript:showFolder('" + "abc" + "')");
JSONObject node3 = new JSONObject();
node3.put("id", "3");
node3.put("pid", "1");
node3.put("name", "阳江海关检验报告");
node3.put("url", "javascript:showFolder('" + "abc" + "')");
JSONObject node4 = new JSONObject();
node4.put("id", "4");
node4.put("pid", "3");
node4.put("name", "检验报告abc");
node4.put("url", "javascript:showFolder('" + "abc" + "')");
JSONObject node5 = new JSONObject();
node5.put("id", "5");
node5.put("pid", "2");
node5.put("name", "检验报告2");
node5.put("url", "javascript:showFolder('" + "abc" + "')");
tree.put(node1);
tree.put(node2);
tree.put(node3);
tree.put(node4);
tree.put(node5);
out.write(tree.toString());
System.out.println(tree.toString());
} catch (JSONException ex) {
Logger.getLogger(OnlineFileManagerServlet.class.getName()).log(Level.SEVERE, null, ex);
} finally {
out.close();
}
}
分享到:
相关推荐
本篇将详细讲解如何使用getJSON来解决跨域问题,以及涉及到的相关技术点。 首先,我们要理解什么是跨域。跨域是指一个域下的文档或脚本尝试请求另一个域下的资源时,如果两个域不相同,就会触发跨域安全策略。例如...
$.getJSON的异步特性可能导致在并发执行多个请求时,回调函数的执行顺序并不与请求的发起顺序一致,这可能导致数据的混乱。例如,如果你有两个或更多的$.getJSON请求,它们可能在不同的时间完成,导致在错误的时间...
在这一部分中,将详细解释关于JQuery库中的$.getJSON方法及其实际应用的知识点。$.getJSON是JQuery中处理JSON数据常用的一个方法,它用于从服务器获取JSON格式数据,并且可以指定当成功接收到数据时执行的回调函数来...
### getjson()兼容性问题详解 #### 一、问题背景 在使用jQuery进行Ajax操作时,开发者可能会遇到一些兼容性问题,尤其是在处理JSON数据时。本文将深入探讨jQuery中的`getjson()`兼容性问题,特别是在IE6等老旧...
`jQuery.getJSON`是jQuery库中的一个非常重要的函数,它用于从服务器端异步获取JSON格式的数据,这对于前端与后端的数据交互具有显著的意义。在本文中,我们将深入探讨`jQuery.getJSON`的工作原理、使用方法以及如何...
本篇将详细介绍如何解决jQuery跨域问题,涉及的方法包括$.get、$.post和$.getJSON等。 首先,我们需要理解什么是跨域。同源策略是浏览器为保障安全而实施的一项机制,它规定JavaScript只能访问与当前页面同源(协议...
在本文中,我们将深入探讨如何使用`getJSON`和`.ashx`处理数据交互,特别关注C#环境下的实现。`getJSON`是jQuery库中一个非常实用的函数,用于异步获取JSON格式的数据,而`.ashx`是ASP.NET中处理HTTP请求的自定义...
这是一个前端后端通过JQuery的getJSON函数交互json数据的例子。 前端网页是front.html,后端处理的模块是back.jsp 把back.jsp、front.html及jquery-1.8.3.min.js部署在Tomcat的webapps的ROOT下,通过在浏览器输入...
从提供的压缩包文件名"100rabhkr-GetJSON-b43fbf0"来看,这可能是一个特定版本的"GetJson"库的下载文件。通常,这样的文件包含库的源码、jar文件或其他构建资源,开发者可以将其导入到项目中直接使用,或者查看源码...
而Jquery库提供了一系列封装好的Ajax函数,如$.get(), $.post(), $.ajax(), 和$.getJSON(),这些函数简化了前端开发者与后端数据交互的过程。 ### 1. $.get() `$.get()`函数是最简单的一种异步请求方式,它发送一...
### AJAX与getJSON详解 在现代Web开发中,异步JavaScript和XML(AJAX)技术被广泛应用于实现网页的局部刷新,提升用户体验。本篇将基于提供的文件信息——“ajax格式的getJSON”,深入探讨AJAX的基本原理、getJSON...
Java 遍历文件夹文件,读取Json文本字符串,存入数据库。
在C#中处理HTTP请求,如POST和GET,以及与JSON数据交互是常见的任务。本文将深入探讨这些主题。 首先,让我们了解GET和POST方法在HTTP协议中的角色。GET方法通常用于从服务器获取资源,而POST方法则用于向服务器...
本文将深入探讨jQuery中的`getJSON`方法,它是用于从服务器获取JSON格式数据的一个便捷函数。通过了解并熟练掌握这个方法,开发者可以轻松地实现与服务器的数据交互,提升用户体验。 `getJSON`是jQuery提供的一个...
在本文中,我们将深入探讨jQuery的`$.getJSON()`方法,它用于从服务器获取JSON格式的数据,并且无需进行页面刷新。这个方法在实现动态、无刷新的Web应用程序时非常有用,例如在构建级联下拉框这样的功能。 `$.get...
在使用$.getJSON发起请求时,我们通常会遇到返回值为空的问题,这是因为异步请求的特性导致的。在异步请求中,$.getJSON发起请求之后,可能会在请求完成之前就执行了后续的代码。如果在数据到达前尝试使用这些数据,...
`getJSON()`是jQuery提供的一个便捷方法,用于通过Ajax请求获取JSON格式的数据。在这个例子中,我们将深入探讨如何使用jQuery的`getJSON()`函数与Servlet进行交互。 首先,我们来看`getJSON()`的基本用法。`getJSON...
由于$.getJSON本质上是一个简化版的$.ajax方法,如果遇到$.getJSON不工作的情况,可以尝试改用$.ajax方法来实现相同的功能。$.ajax提供了更多配置选项,使得开发者可以更精细地控制AJAX请求。基本的$.ajax请求可以写...
本教程将聚焦于如何利用Sohu视频接口结合JQuery的GetJSON方法来实现这一功能,同时使用AutoComplete插件进行辅助。 首先,让我们了解一下`GetJSON`。在JQuery库中,`$.getJSON()`是一个简洁的方法,用于从服务器...
其次,我们要知道什么是getJSON,它是JavaScript中用于向服务器请求数据并以JSON格式接收返回数据的一个方法。JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于机器...