各位高手 小弟我点刷新的按钮时 不能异步加载dtree 帮我看下问题出在哪里
$.getJSON("ajaxLogin!returnList.action",function(data){ 顺便问下这个getJson格式不是要在 ajaxLoginAction类中要转换成json格式? 见红字
test.jsp
<%@ page contentType="text/html; charset=gb2312" language="java" import="java.sql.*" errorPage="" %>
<%
String path = request.getContextPath();
%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>test</title>
<script type="text/javascript" src="<%=path %>/js/jquery.js"></script>
<script type="text/javascript" src="<%=path %>/js/dtree.js"></script>
<script type="text/javascript" src="<%=path %>/js/json.js"></script></head>
<style type="text/css"> 
<!--
body{ margin:0; padding:0; list-style:none;}
body { font:14px "宋体";color:#333;background:#FFF;}
#devicemain{height:400px; width:100%;}
#deviceleft{margin-left:auto; float:left; height:300px; width:35%;}
#leftref{margin:auto; float:left; height:20px; width:100%}
#leftref a{ display:block; text-align:center}
#leftref a span{display:block;}
#treeinfo{float: left; width:100%; height:100px;}
-->
</style>
<body>
<div id="devicemain">
<div id="deviceleft">
<fieldset>
<legend>设备树节点</legend>
<div id="leftref">
<input type="button" id="dtree1" value="刷新"/>
</div>
<div id="treeinfo">111111111</div>
</fieldset>
</div>

   <div id="deviceright">
</div>
</div>
</body>
</html>json.js
$(document).ready(function(){
$("#dtree1").click(function(){
$("#treeinfo").html("aaaaaa");//到一步都可以执行
$.getJSON("ajaxLogin!returnList.action",function(data){
$("#treeinfo").html("");
if(data.length>0)
{
d = new dTree('d');
d.add(0, -1, "<font color=block size=3><b>树形控件</b></font>");
$.each(data.node,function(i,value){
  d.add(value.nodeId, value.parentId, value.nodeName);
});
$("#treeinfo").html(d.toString());
}
else
{
alert("数据加载失败!");
}
});
});
});ajaxLoginAction类
public class AjaxLoginAction extends ActionSupport { // 用户Ajax返回数据
private String result;
private admin admin;
private NodesManager noManager;
private List<Nodes> node;

@JSON(name="ADMIN")
public admin getAdmin() {
return admin;
}
public void setAdmin(admin admin) {
this.admin = admin;
}
public String getResult() {
return result;
}
public void setResult(String result) {
this.result = result;
}
public List<Nodes> getNode() {
return node;
}
public void setNode(List<Nodes> node) {
this.node = node;
}
@Override
public String execute() {
System.out.println("------------1111");
Map<String, String> map = new HashMap<String, String>();
map.put("name", this.admin.getUsername());
map.put("password",this.admin.getPassword());
JSONObject jo = JSONObject.fromObject(map);
this.result = jo.toString();
System.out.println("result1="+this.result);
return SUCCESS;
}
public String returnList(){
node = new ArrayList<Nodes>();
node=noManager.getNodes();//直接从数据库中
return "list";
}
//这里要不要转换成json格式 
public NodesManager getNoManager() {
return noManager;
}
@Resource(name="nodesManager")
public void setNoManager(NodesManager noManager) {
this.noManager = noManager;
}
}NodesManagerImp 
@Component("nodesManager")
public class NodesManagerImp implements NodesManager {
private AreaDao areaDao;

public AreaDao getAreaDao() {
return areaDao;
}
@Resource
public void setAreaDao(AreaDao areaDao) {
this.areaDao = areaDao;
}
public List<Nodes> getNodes() {
ArrayList<Nodes> Nodeslist = new ArrayList<Nodes>();
List<area> areaList=areaDao.getArea();

for (int i = 0; i < areaList.size(); i++) {
Nodes nodes=new Nodes();
nodes.setNodeId(Integer.toString(areaList.get(i).getAreaid()));
nodes.setNodeName(areaList.get(i).getAreaname());
nodes.setParentId(areaList.get(i).getPid()+"");
Nodeslist.add(nodes);
}
System.out.println("nodesimp list nodes 长度="+Nodeslist.size());//可以输出长度
return Nodeslist;
}
}Node 类
public class Nodes {
private int id;
private String nodeId;
private String parentId;
private String hrefAddress;
private String nodeName;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getNodeId() {
return nodeId;
}
public void setNodeId(String nodeId) {
this.nodeId = nodeId;
}
public String getParentId() {
return parentId;
}
public void setParentId(String parentId) {
this.parentId = parentId;
}
public String getHrefAddress() {
return hrefAddress;
}
public void setHrefAddress(String hrefAddress) {
this.hrefAddress = hrefAddress;
}
public String getNodeName() {
return nodeName;
}
public void setNodeName(String nodeName) {
this.nodeName = nodeName;
}
}struts.xml
帮我看下这个struts.xml配置有问题没
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
    "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
    "http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
<package name="light" extends="struts-default">
<action name="login"
class="com.lightControl.action.LoginAction">
<result name="success">jsp/Main.jsp</result>
<result name="error">/error.jsp</result>
<result name="input">jsp/Login1.jsp</result>
</action>
</package>
<package name="ajax" extends="json-default">
<action name="ajaxLogin" class="com.lightControl.action.AjaxLoginAction">
<!-- 返回List对象的 -->
     <result name="list" type="json"></result>
</action>
</package>
</struts>

解决方案 »

  1.   

    你用的是 jquery吧  
    你的  太长  我给你个例子吧得到数据
     
       public String queryById() throws IOException {
            System.out.println("===========");
            Student student = DAOStudentFactory.getStudentInstance().queryById(sid);
            Map map = new HashMap();
            map.put("sname", student.getSname().toString());
            map.put("major", student.getMajor().toString());
            map.put("birth", student.getBirth().toString());
            //  map.put("score", student.getScore());
            String sb = JsonUtils.mapToJson(map);
            System.out.println("sb======" + sb);
            HttpServletResponse response = ServletActionContext.getResponse();
            response.setContentType("text/javascript");//数据按照js格式送回去
            response.setCharacterEncoding("UTF-8");
            PrintWriter out = response.getWriter();
            out.print(sb);
            out.flush();
            out.close();
            return null;
        }请求 接收数据
    jsp页面的js$(".checkbox").each(function(){
    $(this).click(function() {
    if($(this).attr("id") != $(this).attr("checked") == true){ //判断是否被选中
    $("#detailTable").attr("style","display:black;");//得到style的属性 
    var id = $(this).val();   //得到每条选中的记录的value值
         url = 'login_queryById.action';
         args = {time:new Date(),sid:id}; //发送的参数  前面是名字 :后是value 
         $.getJSON(url,args,function(data) {  //得到JSON对象  发送Ajax请求
         $("#sname").html(data.sname);   //填充数据
         $("#major").html(data.major);
         $("#birth").html(data.birth);
         $("#score").html(data.score);
         });
    }
    });
    });