深入浅出Ext JS:数据存储与传输1

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,就判断最后一个请求是否 完成。

你可能感兴趣的:(数据存储)