我想通过store到后台取数据,返回json串为(字符串),前台如何接收啊???
以下为store进入后台代码              var store = new Ext.data.Store({
proxy : new Ext.data.HttpProxy({
url : basePath
+ 'portal.do?key=add&type=view'
}),
reader : new Ext.data.JsonReader({
root : 'root',
totalProperty : 'results',
id : 'id',
fields : ['id', 'name', 'url', 'imageSrc', 'source', 'init',
'flag']
})
});
                  ......                  store.load({
params : {
start : 0,
limit : 15,
portalId : portalId
}
});
var dataView = new Ext.DataView({
store : store,
tpl : tpl,
loadingText : '正在加载...',
style : 'overflow:auto',
itemSelector : 'div-column',
multiSelect : true,
autoHeight : true
});
在后台如何放置数据然后放到json中,前台好取啊?最好能有相关例子或代码参考!!!!!!!!!!!!!!!!!!!!!

解决方案 »

  1.   


    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <link rel="stylesheet" type="text/css" href="extjs/resources/css/ext-all.css" />
    <script type="text/javascript" src="extjs/adapter/ext/ext-base.js"></script>
    <script type="text/javascript" src="extjs/ext-all.js"></script>
    <script>
    Ext.onReady(function(){
        var store = new Ext.data.Store({
            autoLoad:true,
            remoteSort: true,
            proxy: new Ext.data.HttpProxy({
             url : basePath + 'portal.do?key=add&type=view
            }),
            reader: new Ext.data.JsonReader({
                totalProperty: "totalProperty",
                root: "results"
            },['id', 'name', 'url', 'imageSrc', 'source', 'init', 'flag'
            ])
        });
    var tpl = new Ext.XTemplate(
        '<tpl for=".">',
            '<div id="{id}">{name}</div>',
            '<div><a href="{url}"><img src="{imageSrc}"></a></div>',
            '<span>{source}{init}{flag}</span>',
        '</tpl>',
        '<div></div>'
    );
        var portalId = 1
    store.load({params : { start : 0, limit : 15, portalId : portalId}});
    var dataView = new Ext.DataView({
    renderTo:'pad',
    store : store, 
    tpl : tpl, 
    loadingText : '正在加载...', 
    style : 'overflow:auto', 
    itemSelector : 'div-column', 
    multiSelect : true, 
    autoHeight : true 
    }); });
    </script>
    <div id="pad"></div>portal.do
    必须只返回以下字符,不能包含其他HTML标签{totalProperty:2,
     results:[
    {
    id:1,
    name:'name1',
    url:'url1',
    imageSrc:'imageSrc1',
    source:'source1',
    init:'init1',
    flag:'flag1'
    },
    {
    id:2,
    name:'name2',
    url:'url2',
    imageSrc:'imageSrc2',
    source:'source2',
    init:'init2',
    flag:'flag2'
    }
     ]
    }
      

  2.   

    在你的protal.do这Action中public void execute(HttpServletRequest request, HttpServletResponse response)
    throws Exception {
    String key= request.getParameter("key");
    //....这里进行你的sql语句,查询数据,将数据结果保存在Resultset rs中
                      StringBuilder json = new StringBuilder();
    json.append("{total:").append(count).append(",root:[");
    while (crs.next()) {
    json.append("{ID:'").append(crs.getInt("ID"))
                            .append("',RNAME:'").append(crs.getString("RNAME"))
                     .append(rs.isLast() ? "'}]}" : "'},");
    }
                    OutputStreamWriter writer = new OutputStreamWriter(out, "utf-8");
                    writer.write(json );
      }实际上就是后台自己拼接String字符串,但是现在好多都是使用的JSON包..可以直接使用封装好的方法
      

  3.   

    不好意思还要请教一下几位大虾一下。
    我返回的的是个json字符串,可是还是不行。
    返回值如下:
        {data:[{id:'NO.3',name:'我的博客',flag:true},{id:'NO.2',name:'博客分类',flag:true},{id:'NO.1',name:'Google添加的广告',flag:true}]}
    还望各位指教
      

  4.   

    代码中指定的是 root 是 'root',  而json中是 data, 两者要一致
      

  5.   

    在你的reader中写的这是这样,那么你后台应该要保持一致呢
    reader : new Ext.data.JsonReader({ 
    root : 'root', 
    totalProperty : 'results', 
    {results:3,root:[{id:'NO.3',name:'我的博客',flag:true},{id:'NO.2',name:'博客分类',flag:true},{id:'NO.1',name:'Google添加的广告',flag:true}]} 在你封装JSONS的时候,应该是这样数据返回!