数据存储与传输

第10章 数据存储与传输 http://book.51cto.com/art/200901/106549.htm

本章内容

Ext.data简介

Ext.data.Connection

Ext.data.Record

Ext.data.Store

常用proxy

常用reader

高级store

EXT中的Ajax

关于scope和createDelegate()

DWR与EXT整合

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函数中的其他参数。

url:String:请求url。

params:Object/String/Function:请求传递的参数。

method:String:请求方法,通常为GET或POST。

callback:Function:请求完成后的回调函数,无论是成功还是失败,都会执行。

success:Function:请求成功时的回调函数。

failure:Function:请求失败时的回调函数

scope:Object:回调函数的作用域。

form:Object/String:绑定的form表单。

isUpload:Boolean:是否执行文件上传。

headers:Object:请求首部信息。

xmlData:Object:XML文档对象,可以通过URL附加参数的方式发起请求。

disableCaching:Boolean:是否禁用缓存,默认为禁用。

Ext.data.Connection还提供了abort([Number transactionId])函数,当同时有多个请求发生时,根据指定的事务id放弃其中的某一个请求。如果不指定事务id,就会放弃最后一个请求。isLoading([Number transactionId])函数的用法与abort()类似,可以根据事务id判断对应的请求是否完成。如果未指定事务id,就判断最后一个请求是否完成。

你可能感兴趣的:(Ajax,object,function,DWR,url,存储)