`
czpae86
  • 浏览: 721823 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

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

阅读更多

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

 

 

{"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;

这样就实现了。

 

分享到:
评论

相关推荐

    深入浅出Ext_JS:数据存储与传输

    Ext.data是一个专门处理数据的模块,它包含了store、reader和proxy等组件,这些组件协同工作以确保数据在前端和后端之间高效、灵活地流动。Store是数据容器,负责存储和管理数据;Reader则负责解析从服务器接收到的...

    Ext.Ajax.request 小问题收集

    `response`对象包含服务器返回的状态信息,可以通过`response.status`和`response.statusText`获取HTTP状态码和状态消息,`response.responseText`或`response.responseXML`获取原始响应数据。 标签中的“源码”...

    extjs 前后台交互参数出现中文乱码问题的解决方法

    ### extjs前后台交互参数出现中文乱码问题的解决方法 #### 问题背景与原因分析 在使用MyEclipse开发工具进行Web应用开发时,尤其是采用ExtJS框架结合Ajax技术进行前后端数据交互的过程中,可能会遇到一个常见的...

    ext3.*画图的例子

    如果数据需要从后台获取,我们可以使用`Ext.data.JsonStore`或`Ext.data.Store`与`Ext.Ajax.request`结合。例如: ```javascript Ext.Ajax.request({ url: 'getData.php', // 后台数据接口 success: function...

    Ext.data.PagingMemoryProxy分页一次性读取数据的实现代码

    然后,创建一个`Ext.data.Store`实例,并设置`reader`为`ArrayReader`,这样我们就可以解析从服务器返回的数组数据。在成功获取数据后,使用`Ext.Ajax.request`方法将数据存储到`PagingMemoryProxy`中,如下所示: ...

    Ext 动态加载表单数据

    5. **Ext.data.Store**:Store是用来存储数据的容器,它可以与表单联动。在动态加载数据时,我们可以创建一个Store,然后将JSON数据加载到Store中,再将Store绑定到表单。 6. **Ext.form.Basic**:每个表单都包含一...

    extjs数据存储与传输详解

    ### Extjs数据存储与传输详解 #### 一、Ext.data简介 **Ext.data**是Extjs框架中的核心组件之一,负责处理数据的加载、存储、转换...通过对Ext.data模块的理解和运用,可以极大地提高前端应用的开发效率和用户体验。

    ext_ext_knew7pi_ajax_

    reader: new Ext.data.JsonReader({ root: 'menus', idProperty: 'id' }), fields: ['id', 'text'] }); var menu = new Ext.menu.Menu({ items: [{ text: 'Loading...', disabled: true }], store: ...

    Ext.ux.UploadDialog

    Ext.ux.UploadDialog是Ext JS库的一个用户界面插件,专为实现文件上传对话框而设计。这个组件扩展了Ext JS的基本功能,提供了一个友好且功能丰富的文件上传界面,适用于Web应用程序中的各种文件管理需求。 在Ext JS...

    ext 编程开发指南

    使用EXT,可以通过简单的方法获取DOM节点,例如: ```javascript var elements = Ext.get('someElementId'); ``` 如果需要获取多个节点,则可以使用`query`方法: ```javascript var nodes = Ext.query('div....

    关于ExtJS的工具栏动态添加按钮(从后台数据库读取信息).doc

    1. **连接后台**:首先,我们需要使用Ajax请求或者其他数据获取技术(如Sencha Direct或Ext.data.Store)与后台服务器通信。通常,我们会创建一个`Ext.Ajax.request`或者使用`Ext.data.proxy.Proxy`来发送HTTP请求到...

    Ext combo 下拉框级联

    var parentStore = Ext.create('Ext.data.Store', { /* ... */ }); var parentComboBox = Ext.create('Ext.form.field.ComboBox', { store: parentStore, displayField: 'name', valueField: 'id', listeners:...

    Ext.FormPanel 提交和 Ext.Ajax.request 异步提交函数的区别

    - **自动处理表单数据**:`getForm().submit()`会自动获取表单内的所有字段值,无需手动构建参数对象。 - **内置验证**:在提交前,`getForm().submit()`会检查表单内所有字段的验证规则,如果存在无效的数据,会...

    sencha touch2 ajax 获取数据

    在探讨“Sencha Touch2 AJAX获取数据”的主题时,我们首先需要理解Sencha Touch2框架...通过熟练掌握`Store`、`Reader`和`Ext.Ajax.request`等核心概念,开发者可以有效地管理数据流,实现更加复杂和响应式的用户界面。

    基于ext的div拖动

    你可以使用`Ext.Ajax.request`方法发送异步请求,或者配置`Ext.data.Store`以自动加载和保存数据。 例如,使用`Ext.Ajax.request`获取数据: ```javascript Ext.Ajax.request({ url: 'your/api/url', method: '...

    extjs的数据传递

    在这个例子中,`response.responseText`包含了服务器返回的JSON字符串,`Ext.decode`将其转换为JavaScript对象,从而可以方便地访问其属性。 ##### 2. 使用`Ext.util.JSON.decode` 这是一种替代方案,与`Ext.decode...

    Ext 异步加载添加 删除节点 修改combobox选择项

    var comboBoxStore = new Ext.data.Store({ data: comboBoxData, fields: ['id', 'text'] }); comboBox.setStore(comboBoxStore); ``` 这样,ComboBox的选择项就被动态地更新为树节点的文本了。 总结,通过异步...

    ExtJS对Ajax的支持

    开发者可以通过设置`xmlData`参数来传递XML文档。这在与那些需要或偏好XML格式数据的服务器交互时特别有用。例如: ```javascript var xmlData = '<request><username>admin</username><password>secret</password>...

Global site tag (gtag.js) - Google Analytics