Ext Store Proxy Ajax
使用Store ajax的方式来获取数据
<div id="grid1"> </div>
<script>
Ext.onReady(function() {
var store = new Ext.data.JsonStore({
storeId: 'myStore',
// autoLoad: true,//加上这个配置 就无需手动的写store.load()
proxy: {
type: 'ajax',
url: 'getImage.php',
reader: {
type: 'json',
root: 'images', //getData的函数最先触发
//这里配置过getData就相当于把数据取走了
//后面on事件 函数就不能通过records取到数据了 还是可以通过store.getProxy().getReader().rawData去到数据
// afterRequest 则根本取不到数据
// getData: function(data){
// console.log('getData in reader');
// console.log(data);
// }
}
// ,
// afterRequest: function(req, res) {
// console.log("After Request!", req.operation.response);
// }
}, //alternatively, a Ext.data.Model name can be given (see Ext.data.Store for an example)
fields: ['name', 'url', {
name: 'size',
type: 'float'
}, {
name: 'lastmod',
type: 'date'
}]
});
store.on({
'load': function(store, records, success, opts) {
console.log('on1');
console.log(success);
//records 是 []
console.log(records);
//PS rawData是一个{}
console.log(store.getProxy().getReader().rawData);
}
}, this, {single:true});
store.on('load', function(store, records, success, eOpts ){
console.log('on2');
console.log(success);
console.log(records);
console.log(store.getProxy().getReader().rawData);
});
//这个就是手动load 只是在store.load()的基础上传入了一个config
store.load({
callback: function(records, opts, success) {
console.log('load');
console.log(success);
console.log(records);
}
});
console.log(store);
var grid = new Ext.grid.Panel({
renderTo: 'grid1',
store: store,
columns: [{
header:'NAME',
dataIndex: 'name'
}, {
header:'URL',
dataIndex: 'url'
}, {
header: 'SIZE',
dataIndex:'size'
}, {
header: 'LASTMOD',
dataIndex:'lastmod'
}]
})
}); </script>
响应
<?php
echo '{"images":[{"name":"Image one","url":"/GetImage.php?id=1","size":46.5,"lastmod":"2007-11-28T16:00:00.000Z"},{"name":"Image Two","url":"/GetImage.php?id=2","size":43.2,"lastmod":"2007-11-29T16:00:00.000Z"}]}';
?>
PS 动态添加列
        var fields = ['name', 'url', {
            name: 'size',
            type: 'float'
        }, {
            name: 'lastmod',
            type: 'date'
        }];
        var columns = [{
            header: 'NAME',
            dataIndex: 'name'
        }, {
            header: 'URL',
            dataIndex: 'url'
        }, {
            header: 'SIZE',
            dataIndex: 'size'
        }, {
            header: 'LASTMOD',
            dataIndex: 'lastmod'
        }];
        var store = new Ext.data.JsonStore({
            storeId: 'myStore',
            // autoLoad: true,//加上这个配置 就无需手动的写store.load()
            proxy: {
                type: 'ajax',
                url: 'getImage.php',
                reader: {
                    type: 'json',
                    root: 'images',
                },
                afterRequest: function(req, res) {
                    console.log("After Request!", req.operation.response);
                }
            },
            fields: fields
        });
        var grid = new Ext.grid.Panel({
            renderTo: 'grid1',
            store: store,
            columns: columns
        })
        var column = Ext.create('Ext.grid.column.Column', {
            text: 'New Column',
            dataIndex:'newColumn'
        });
        var field = new Ext.data.Field({
            name:'newColumn'
        });
        fields.push(field);
        grid.getStore().model.setFields(fields);
        grid.getStore().reload();
        grid.headerCt.insert(grid.columns.length, column);
        grid.getView().refresh();
不过对于Ext4.0.7版本 则没有 setFields 方法
                    newCols.forEach(function(item){
                        fields.push(item.dataIndex);
                        _columns.push({
                            header: item.header,
                            dataIndex: item.dataIndex
                        });
                    });
                    var storeNew = new Ext.data.Store({
                        fields: fields,
                        data: result.data,
                        reader: {
                            root: 'data',
                            totalProperty: 'total'
                        }
                    });
                    grid.reconfigure(storeNew, _columns);
                    grid.setLoading(false);
使用JsonP的Proxy
    Ext.onReady(function() {
        var columns = [{
            header: '编号',
            dataIndex: 'id'
        }, {
            header: '名称',
            dataIndex: 'name'
        }, {
            header: '描述',
            dataIndex: 'descn'
        }];
        //JsonP有两种实现方式
        var store = new Ext.data.Store({
            proxy: new Ext.data.ScriptTagProxy({
                url: 'http://www.mossle.com/data.json',
                // reader: new Ext.data.JsonReader({
                //     totalProperty: "totalProperty",
                //     root: "root",
                //     id: "id"
                // }),
                // 这两种reader的写法都可以
                reader:{
                    totalProperty: "totalProperty",
                    root: "root",
                    id: "id"
                }
            }),
            fields: [{
                name: 'id'
            }, {
                name: 'name'
            }, {
                name: 'descn'
            }]
        });
        var store = new Ext.data.Store({
            proxy:{
                type:'jsonp',
                url: 'http://www.mossle.com/data.json',
                reader: {
                    totalProperty: "totalProperty",
                    root: "root",
                    id: "id"
                },
                callbackKey: 'callback' //也可以不写  因为默认这个key就是 callback
            },
            fields: [{
                name: 'id'
            }, {
                name: 'name'
            }, {
                name: 'descn'
            }]
        })
        var grid = new Ext.grid.GridPanel({
            renderTo: 'grid',
            width: 350,
            height: 150,
            loadMask: true,
            store: store,
            columns: columns
        });
        store.load();
    });
响应
Ext.data.JsonP.callback1({"id":0,"totalProperty":5,"successProperty":true,"root":[{"id":"1","name":"name1","descn":"descn1"},{"id":"2","name":"name1","descn":"descn1"},{"id":"3","name":"name1","descn":"descn1"},{"id":"4","name":"name1","descn":"descn1"},{"id":"5","name":"name1","descn":"descn1"}]})
Ext Store Proxy Ajax的更多相关文章
- Extjs6设置Store、Ajax、form的请求方式(GET、POST)
		Extjs6 设置Store.Ajax.form的请求方式(GET.POST) Ajax请求和Form的submit方法设置请求方式和原来一样,使用method : 'POST'设置 // 表单提交 ... 
- Ext修改所有Ajax的timeout
		Ext修改所有Ajax的timeout stackoverflow上的解决方案 //需要在初始化viewport时执行 //方法一重写 Ext.Ajax.timeout= 60000; Ext.ove ... 
- MVVM模式下 修改 store的ajax请求url。
		MVVM模式下 修改 store的ajax请求url. view.down('Pro').getViewModel().getStore('xx_store').proxy.url = "s ... 
- EXT.JS6中的model,store,proxy的一些用法
		//one-to-one Ext.define('Address', { extend: 'Ext.data.Model', fields: [ 'address', 'city', 'state', ... 
- 【翻译】Ext JS 4——Ajax和Rest代理处理服务器端一场和消息的方法
		原文:EXTJS4 - Handle Server-side exceptions and message from an Ajax or Rest proxy 作者:Raja 可能要处理的情况:su ... 
- Sencha Touch 2.2 Store Proxy 异常监控
		移动端到服务端通信往往会发生很多莫名的异常情况,如何有效的监控proxy异常,给用户友好的用户体验呢? Proxy给我提供了异常exception的监听事件,只需要监控该项目即可. Sencha To ... 
- Ext.store.load callback
		var paramsReceivable = {}; paramsReceivable.querytext = Ext.getCmp('hiddquerytext').g ... 
- Ext 怎么发ajax请求
		Ext3.3完整包 Ext3.3中文文档 数据表的结构是:数据表table > 记录record > 字段 store的结构是: Ext.data.Store > Ext.dat ... 
- ExtJS笔记   Proxy
		Proxies are used by Stores to handle the loading and saving of Model data. Usually developers will n ... 
随机推荐
- poj1700--贪心算法
			题意:一群人坐船过河,船只有一辆,且一次最多坐两人,时间按慢的算.求最短过河时间? 总共有两种做法可使用: 1.先让最快和次快的过去,让最快的把船开回,再让最慢和次慢的过去,让次快的把船开回.需两个来 ... 
- 关于新装ubuntu系统update失败和build-essential失败的解决办法
			我是12月4日在新电脑上的vmware-workstation 10 上安装的ubuntu14.04LTS,但安装后再校园环境下总是build-essential失败,上网一查,说是要先update, ... 
- Netty4.X  学习(一)
			Server: import io.netty.buffer.ByteBuf; import io.netty.channel.ChannelHandlerContext; import io.net ... 
- HTML5 canvas入门
			HTML5 Canvas入门 <canvas> 标签定义图形,比如图表和其他图像,您必须使用脚本来绘制图形.在画布上(Canvas)画一个红色矩形,渐变矩形,彩色矩形,和一些彩色的文字. ... 
- php中如何输出当前服务器的(中国)当前时间
			date_default_timezone_set('PRC');//PRC是什么?PRC是中华人民共和国啊-_- echo "今天是".date("Y年m月d日&quo ... 
- hdu 4676 Sum Of Gcd  莫队+数论
			题目链接 给n个数, m个询问, 每个询问给出[l, r], 问你对于任意i, j.gcd(a[i], a[j]) L <= i < j <= R的和. 假设两个数的公约数有b1, ... 
- skynet初学
			记录下命令 git clone https://github.com/cloudwu/skynet.git sudo apt-get install autoconf sudo apt-get ins ... 
- 数据库合并数据sql
			1.sql2000中只能用自定义的函数解决 )) , 'aa') , 'bb') , 'aaa') , 'bbb') , 'ccc') go )) ) as begin ) select @str = ... 
- 紫薇~还记得大明湖畔的HTML5智力拼图吗?
			曲线谜团是非常有趣的HTML5智力游戏,据说超过多少分会有惊喜,游戏简单易操作,偶尔抛弃那种杀死脑细胞的大型游戏,玩玩这种简单经典的益智小游戏,放松放松,也是不错的选择嘛-将游戏 通过 统一开发环境( ... 
- linux中读写锁的rwlock介绍-nk_ysg-ChinaUnix博客
			linux中读写锁的rwlock介绍-nk_ysg-ChinaUnix博客 linux中读写锁的rwlock介绍 2013-02-26 13:59:35 分类: C/C++ http://yaro ... 
