jquery ajax json4 treeview动态加载

xuewenke 2011-04-29

<ul id="tree" class="filetree treeview-famfamfam">
</ul>
 

动态加载的时候,只会在第一次展开的时候发送服务器,再次展开是不发送的,类似jquey的one事件处理。 

treeview每次请求都是get请求,会自动带一个"root"的url参数,第一次是"source"。 

以后的话都以li的id作为参数,即你在json数据中设置的"id"值。如果json中某个bool值的项目你不需要,就不写,设置false没有效果的。

还需要注意的是treeview的jquery.treeview.anync.js有一个bug,原来是:

current.children("span").addClass(this.classes);这样有异常的,要改成字符串形式,如下:

current.children("span").addClass(""+this.classes); 
response.setHeader("Cache-Control", "no-cache");   
String parameter = request.getParameter("root");
if (parameter != null)
{
//第一次加载的时候root是"source", 以后是id的值
if (parameter.equals("source"))
{
try
{
JSONArray baseArray = new JSONArray();
for (int i = 0; i < 3; i++)
{
JSONObject baseObject = new JSONObject();
baseObject.append("text", "base"+i);
baseObject.append("id", i);
/*如果不需要某个设置就不写,设置false没有效果的*/
//baseObject.append("expanded", true); 
baseObject.append("classes", "folder");
baseObject.append("hasChildren", true);
baseArray.put(baseObject);
}
String json = baseArray.toString();
System.out.println(json);
response.setHeader("Cache-Control", "no-cache");   
response.setContentType("application/json");
byte[] bs = json.getBytes("utf-8");
response.setContentLength(bs.length);
OutputStream os = response.getOutputStream();
os.write(bs);
os.flush();
os.close();
}
catch (JSONException e)
{
e.printStackTrace();
}
}
else 
{
try
{
JSONArray childArray = new JSONArray();
for (int i = 0; i < 2; i++)
{
JSONObject childObject = new JSONObject();
childObject.append("text", "base is "+parameter+" child" + i);
childObject.append("id", i);
/* 如果不需要某个设置就不写,设置false没有效果的 */
// baseObject.append("expanded", true);
childObject.append("classes", "folder");
childObject.append("hasChildren", true);
childArray.put(childObject);
}
String json = childArray.toString();
System.out.println(json);
response.setHeader("Cache-Control", "no-cache");
response.setContentType("application/json");
byte[] bs = json.getBytes("utf-8");
response.setContentLength(bs.length);
OutputStream os = response.getOutputStream();
os.write(bs);
os.flush();
os.close();
}
catch (JSONException e)
{
e.printStackTrace();
}
}
}
 

相关推荐