user.jsExt.onReady(function(){
var cm = new Ext.grid.ColumnModel([{
header:"age",
dataIndex:'age'
},{
header:"id",
dataIndex:'id'
},{
header:"name",
dataIndex:'name'
},{
header:"sex",
dataIndex:'sex'
}]); var store = new Ext.data.Store({
proxy:new Ext.data.HttpProxy({url:'/cyz/ext/user.do'}),   
reader:new Ext.data.JsonReader({   
            totalProperty:'totalRows',   
            root:'root'  
        },   
        [   
          {name: 'age'},   
           {name: 'id'},   
           {name: 'name'},
           {name: 'sex'}   
        ]),   
        failure : function() {    
Ext.Msg.alert("数据加载失败!请检查");    
        }   
    });    var grid = new Ext.grid.GridPanel({
title:"root",
width:600,
height:200,
cm:cm,
store:store
});
store.load();
grid.render("table");
});UserAction.javapublic ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) throws Exception {
UserForm userform = (UserForm)form;
String hql = "from User u";
List list = managerDao.getByHql(hql);//通过hql语句获取user表中的信息
StringBuilder str = new StringBuilder();

JSONArray jsonArray = JSONArray.fromObject(list); 
String json = "{totalRows : 10, root:" + jsonArray.toString() + "}";
response.setHeader("X-JSON", json.toString());
       response.setCharacterEncoding("utf-8"); 
       response.setHeader("Cache-Control", "no-cache");// 清除缓存
        response.getWriter().print(json);// 将 json 串写入输出流中 
        System.out.println(json);
return mapping.findForward("user");
}打印出的json数据:{totalRows : 10, root:[{"age":24,"id":1,"name":"cyz","sex":"m"}]}

解决方案 »

  1.   

    如果是JSP页面的话,请注意在组织JSON格式数据的时候,类似于以下形式
    String clk=request.getParameter("callback");
    String json="";
    if(clk!=null)
      json+=clk+"(";
    json+="{totalRows : 10, root:" + jsonArray.toString() + "}"; 
    if(clk!=null)
      json+=")";其中callback一般不会等于NULL,呵呵
      

  2.   

    demo.html<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" 
        "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
        <link rel="stylesheet" type="text/css" href="ext-2.2/resources/css/ext-all.css">
        <script type="text/javascript" src="ext-2.2/adapter/ext/ext-base.js"></script>
        <script type="text/javascript" src="ext-2.2/ext-all.js"></script>
        <!-- 本地化的脚本引用在这里 -->
        <script type="text/javascript">
    Ext.onReady(function(){ 
    var cm = new Ext.grid.ColumnModel([{ 
    header:"age", 
    dataIndex:'age' 
    },{ 
    header:"id", 
    dataIndex:'id' 
    },{ 
    header:"name", 
    dataIndex:'name' 
    },{ 
    header:"sex", 
    dataIndex:'sex' 
    }]); var store = new Ext.data.Store({ 
    proxy:new Ext.data.HttpProxy({
    url:'data.xml'}),  
    reader:new Ext.data.JsonReader({  
                totalProperty:'totalRows',  
                root:'root'  
            },  
            [  
              {name: 'age'},  
              {name: 'id'},  
              {name: 'name'}, 
              {name: 'sex'}  
            ]),  
            failure : function() {    
    Ext.Msg.alert("数据加载失败!请检查");    
            }  
        });  var grid = new Ext.grid.GridPanel({ 
    title:"root", 
    width:600, 
    height:200, 
    cm:cm, 
    store:store 
    }); 
    store.load(); 
    grid.render("table"); 
    });     </script>    <title>Application Layout Tutorial</title>
    </head>
    <body>
    <div id="table"></div>
     </body>
    </html>
    data.xml{totalRows : 10, root:
    [
    {"age":24,"id":1,"name":"aaaa","sex":"m"},
    {"age":25,"id":2,"name":"bbbb","sex":"f"},
    {"age":26,"id":3,"name":"ccc","sex":"m"}
    ]
    }
    将以上代码放到你的服务器目录下,修改ext路径。
    如果可以显示结果说明你的jsp代码有问题,
    如果不可以显示数据说明你ext的包有问题。
    如果是jsp有问题你可以在url里输入/cyz/ext/user.do看看结果和控制台打印的是不是一样的。如果一样的那应该就不是java代码的问题了。
      

  3.   

    我也遇到同样问题,
    把控制台的输出的数据复制到xml文件就能够显示,直接从后天拿就不能显示,
    请教是不是编码问题
      

  4.   

    jsp 页面传数据是否要引入相关jar包?
    如果要,是那些?