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 ...
随机推荐
- C#:占位符的例子
在c#中有两种方式可以输出多个字符. static void Main() { string c=Console.ReadLine(); string d=Console.ReadLine(); Co ...
- Java Tomcat Glassfish Weblogic远程debug(remote debug)
tomcat ./catalina.sh jpda start 这条命令启动tomcat,它就会监听8000端口,等待调试器的连接. 默认监听8000端口,通过设置环境变量JPDA_ADDRESS指定 ...
- 独立版Jexus
一:下载资源包 把 jexus压缩包下载到linux临时文件夹中. cd /tmp wget linuxdot.net/down/jexus--x64.tar.gz 二,解压: tar -zxvf j ...
- struts2中的表达元素标签使用详解
级联标签是使用:一级下拉框应该使用map对象的key集合作为下拉框元素,二级下了框应该使用一级下拉框对应的选择值自动的弹出待选择的元素值(集合) 页面代码如下:<s:set name=" ...
- hadoop笔记之Hive的数据存储(视图)
Hive的数据存储(视图) Hive的数据存储(视图) 视图(view) 视图是一种虚表,是一个逻辑概念:可以跨越多张表 既然视图是一种虚表,那么也就是说用操作表的方式也可以操作视图 但是视图是建立在 ...
- CSS制作水平垂直居中对齐
作为前端攻城师,在制作Web页面时都有碰到CSS制作水平垂直居中,我想大家都有研究过或者写过,特别的其中的垂直居中,更是让人烦恼.这段时间,我收集了几种不同的方式制作垂直居中方法,但每种方法各有千秋呀 ...
- WEB开发之如何改善PHP开发方式
改善PHP开发方式一般可以分为以下几种实现方式: 1.组织和样式 找出一种适合你的组织方法和编码样式,并且一直坚持下去,这样的话,你的代码的组织和布局会变得十分有条理.我们不应该轻视代码的组织 ...
- android jar 第三方包
工程交叉了,做相互引用 1.单纯的代码jar 不引用res http://terryblog.blog.51cto.com/1764499/564558 1.2.连带源码一起打包出来 http:// ...
- Windows 7妙用 笔记本变无线AP轻松共享
笔记本变AP的前提和应用原理 笔记本变AP的前提是你所处的房间或地点需要提供有线宽带的连接,而且你的笔记本要有无线网卡.如果这两个条件具备了,即使没有路由器/无线AP等辅助设备,多个笔记本电脑共享上网 ...
- 扩展C++ string类
在实际开发过程中,C++string类使用起来有很多不方便的地方,笔者根据根据这些不足简单的扩展了这个类,如增加与数字之间的相互转化和格式化字符串.不足的地方望指正.读者也可以根据自己需求继续扩展. ...