首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > Ajax >

extjs用ajax获取json数据不能转换成Store,该怎么处理

2013-01-08 
extjs用ajax获取json数据不能转换成Store本帖最后由 showbo 于 2012-12-20 09:05:42 编辑前台代码:Ext.onR

extjs用ajax获取json数据不能转换成Store
本帖最后由 showbo 于 2012-12-20 09:05:42 编辑 前台代码:

Ext.onReady(function () {
            var store = new Ext.data.Store({
                fields: [{ name: 'user_id' }, { name: 'user_name' }, { name: 'ssyj', type: "float"}],
                reader: new Ext.data.JsonReader({ totalProperty: "results", root: 'data' })
//                listeners: {
//                    load: function () {
//                        alert(store.getCount());
//                    }
//                }
            });
            var requestConfig = {
                url: '/WebService/test/tb_data.ashx', //请求的服务器地址
                params: { userName: 'tom', password: '123' }, //请求参数
                customer: '自定义属性', //附加属性
                callback: function (options, success, response) {//回调函数
                    alert(response.responseText);
                    var forminfo = Ext.decode(response.responseText);
                    store.loadData(Ext.JSON.decode(response.responseText,true));
                    alert(store.getCount());
                }
            }
            Ext.Ajax.request(requestConfig); //发送请求

返回的json数据字符串:
{"results":3,"data":[
{"user_name":"郑正英","user_id":"10","ssyj":"39569.0100"},
{"user_name":"王雪梅","user_id":"11","ssyj":"557619.9900"},
{"user_name":"张丹青","user_id":"12","ssyj":"116000.0000"},
{"user_name":"张海东","user_id":"13","ssyj":"1412742.9900"}]}

后台代码:

public void ProcessRequest(HttpContext context)
        {
            context.Request.ContentEncoding = Encoding.GetEncoding("UTF-8");

            context.Response.ContentEncoding = Encoding.GetEncoding("UTF-8");



            context.Response.Charset = "UTF-8";

            context.Response.ContentType = "text/plain";

            string result = string.Empty;

            string ygk_list = string.Empty;

            string strSQL = string.Empty;

            string state = context.Request["userName"];

            string state1 = context.Request["password"];

            try
            {
                strSQL = string.Format(@"select tb_user.user_name,tb_fwcjqr.user_id,sum(tb_fwcjqr.htzj)as ssyj   from tb_fwcjqr
inner join tb_user on tb_user.id = tb_fwcjqr.user_id
group by tb_user.user_name ,tb_fwcjqr.user_id");

                DataTable dt = LTP.DBUtility.DbHelperSQL.Query(strSQL).Tables[0];

                if (dt.Rows.Count > 0)
                {
                    result = LTP.BLL.Ext_Json.DataTable2Json(dt);
                }
                else
                {
                    result = "false";
                }

            }
            catch
            {
                result = "error";
            }

            context.Response.Write(result);
        }



输出store.getCount()的结果是0.

[解决办法]

store.loadData(Ext.JSON.decode(response.responseText,true).data);

loadData方法加载的是数组,数组内容不能放在json里面

这个问题和你的一样:http://bbs.csdn.net/topics/390316151,loadData不能更新总记录数的,需要自己继承Ext.data.Store来提供一个API给外部更新总记录数

刚写的一篇内容,参考下:Ext4更新store总记录数量

热点排行