当前位置:首页 > 开发 > Web前端 > Ext > 正文

通过重写reader对象的read方法,使得Ext.data.Store可以获取后台返回的responseText

发表于: 2010-08-20   作者:czpae86   来源:转载   浏览:
摘要: 是的,开发部开发机器不能上网,我才想到这方法。万分感谢!     {"rows":[{"name":"开发部","id":"1000001","number":"11"}, {"name":"市场部&q

是的,开发部开发机器不能上网,我才想到这方法。万分感谢!

 

 

{"rows":[{"name":"开发部","id":"1000001","number":"11"},
{"name":"市场部","id":"1000002","number":"22"}]},
totalCount:2,money:3000}  

 

 

 

上面是一个后台返回的grid分页json格式数据,

那么我们怎么获得"money"这个键对应的值呢?(注意:只调一次后台,而且grid是分页的)。

按平时的情况,store设置了root:'rows'属性后,我们通过操作store也只能获得rows:[]里面的数据。

去看ext里面的源码发现Ext.data.JsonReader(这里使用的是Ext.data.JsonReader)是通过read方法获取后台返回的数据信息的:

read : function(response){
        var json = response.responseText;
        var o = Ext.decode(json);
        if(!o) {
            throw {message: 'JsonReader.read: Json object not found'};
        }
        return this.readRecords(o);
   }

 

没有错我们看到了response,既然这样我们只要在这里作修改便可!

重写Ext.data.JsonReader的read方法,为Reader增加一个responseText属性

Mic.JsonReader = Ext.extend(Ext.data.JsonReader, {
	read : function(response){
        var json = response.responseText;
        var o = Ext.decode(json);
        this.responseText = json;
        if(!o) {
            throw {message: 'JsonReader.read: Json object not found'};
        }
        return this.readRecords(o);
    }
});

 

把我们定义的store里面的

reader : Ext.data.JsonReader({属性代码省略......}),

换成

reader : Mic.JsonReader({......}),

就可以通过store获得后台返回的所有信息!

上面为例子定义一个store:

var ds = new Ext.data.Store({

//其他代码省略...............

//....................

reader :  Mic.JsonReader({......})

});

获得方法:

var o = Ext.decode(ds.reader.responseText); 

var money = o.money;

这样就实现了。

 

通过重写reader对象的read方法,使得Ext.data.Store可以获取后台返回的responseText

  • 0

    开心

    开心

  • 0

    板砖

    板砖

  • 0

    感动

    感动

  • 0

    有用

    有用

  • 0

    疑问

    疑问

  • 0

    难过

    难过

  • 0

    无聊

    无聊

  • 0

    震惊

    震惊

版权所有 IT知识库 CopyRight © 2009-2015 IT知识库 IT610.com , All Rights Reserved. 京ICP备09083238号