10.1 Ext.data简介
Ext.data在命名空间中定义了一系列store、reader和proxy。Grid和ComboxBox都是以Ext.data为媒介 获取数据的,它包含异步加载、类型转换、分页等功能。Ext.data默认支持Array、JSON、XML等数据格式,可以通过Memory、 HTTP、ScriptTag等方式获得这些格式的数据。如果要实现新的协议 和新的数据结构 ,只需要扩展reader和proxy即可。DWRProxy就实现了自身的proxy和reader,让EXT可以直接从DWR获得数据。
10.2 Ext.data.Connection
Ext.data.Connection是对Ext.lib.Ajax的封装,它提供了配置 使用Ajax的通用方式,它在内部通过Ext.lib.Ajax实现与后台的异步调用。与底层的Ext.lib.Ajax相比,Ext.data. Connection提供了更简洁的配置方式,使用起来更方便。
Ext.data.Connection主要用于在Ext.data.HttpProxy和Ext.data.ScriptTagProxy中 执行与后台交互的任务,它会从指定的URL获得数据,并把后台返回的数据交给HttpProxy或ScriptTagProxy处 理,Ext.data.Connection的使用方式如代码清单10-1所示。
代码清单10-1 使用Ext.data.Connection
var conn = new Ext.data.Connection({
autoAbort: false,
defaultHeaders: {
referer: 'http://localhost:8080/'
},
disableCaching : false,
extraParams : {
name: 'name'
},
method : 'GET',
timeout : 300,
url : '01-01.txt'
});
在使用Ext.data.Connection之前,都要像上面这样创建一个新的Ext.Connection实例。我们可以在构造方法里配置 对应的参数,比如autoAbort表示链接是否会自动断开、default- Headers参数表示请求的默认首部信息、disableCaching参数表示请求是否会禁用缓存、extraParams参数代表请求的额外参数、 method参数表示请求方法、timeout参数表示连接的超时时间、url参数表示请求访问的网址等。
在创建了conn之后,可以调用request()函数发送请求,处理返回的结果,如下面的代码所示。
conn.request({
success: function(response) {
Ext.Msg.alert('info', response.responseText);
},
failure: function() {
Ext.Msg.alert('warn', 'failure');
}
});
Request()函数中可以设置success和failure两个回调函数,分别在请求成功和请求失败时调用。请求成功时,success函数的参数就是后台返回的信息。
我们再来看一下request函数中的其他参数。
q url:String:请求url。
q params:Object/String/Function:请求传递的参数。
q method:String:请求方法,通常为GET或POST。
q callback:Function:请求完成后的回调函数,无论是成功还是失败,都会执行。
q success:Function:请求成功时的回调函数。
q failure:Function:请求失败时的回调函数
q scope:Object:回调函数的作用域。
q form:Object/String:绑定的form表单。
q isUpload:Boolean:是否执行文件 上传。
q headers:Object:请求首部信息。
q xmlData:Object:XML文档对象,可以通过URL附加参数的方式发起请求。
q disableCaching:Boolean:是否禁用缓存,默认为禁用。
Ext.data.Connection还提供了abort([Number transactionId])函数,当同时有多个请求发生时,根据指定的事务id放弃其中的某一个请求。如果不指定事务id,就会放弃最后一个请求。 isLoading([Number transactionId])函数的用法与abort()类似,可以根据事务id判断对应的请求是否完成。如果未指定事务id,就判断最后一个请求是否 完成。