ExtJs4入门之三: Proxy数据代理类

来源:互联网 发布:淘宝店怎么才能有人气 编辑:程序博客网 时间:2024/06/05 12:39


一:  Ajax获取Json对象

Ext.onReady(function(){//声明一个模型类 , 相当于classExt.define("Person",{extend:"Ext.data.Model",fields:[        {name:'name',type:'atuo'},        {name:'age',type:'int'} ], //==>代理类的实例  proxy:{ type:"ajax", url:"fakeData.jsp"  //model不用配置 ,因为就生成在model内部  }});var p = Ext.ModelMgr.getModel( "Person" );//用ModelMgr获得相应Model目的是后边的load方法//==>用Model类的load()方法获取数据 (比较底层的方法)p.load( null , { //第一个参数默认是"{id:XX}"scope:this,failure:function(record , operation)//后边三个参数是回调函数 {alert(record);},success: function(record , operation){alert(record.data.name + "__" + record.data.age);},callback:function(record , operation){}});});


同一文件夹下: fakeData.jsp

<%@ page language="java"  contentType="text/html" pageEncoding="UTF-8"%><%response.getWriter().write( "{name:'rt' , age:24}" );%>



二:用Ext.data.proxy.Ajax对象实现ajax

Ext.onReady(function(){//模型类 , 相当于classExt.define("person",{extend:"Ext.data.Model",fields:[        {name:'name',type:'string'},        {name:'age',type:'int'} ]});//==>代理对象 , 用对象的 doRequest()方法获取数据var ajaxProxyObj = Ext.create("Ext.data.proxy.Ajax",{url : "fakeData.jsp",model : "person",reader : "json",limitParam : "indexParm" //参数未修改前默认叫"limit" , 通过这类描述可以修改字段名称});//拿到回应中的字串( 没decode解码), 和转成原生Js对象ajaxProxyObj.doRequest( new Ext.data.Operation({action:"read",//读方式//后台能拿到其余参数的json对象, 再做处理 最终再返回前台limit:3,//分页数据start:1,sorters:[ //排序数组 Ext.util.Sorter         {         property:"name",         direction:"ASC"         },{         property:"age",         direction:"ASC"         } ]//还可以实现过滤器, 分组}) , function(obj){alert(obj);//chrome的F12调试工具 Sources , 右侧Scope Variablesvar txt = obj.response.responseText;////拿到回应中的字串( 没decode解码)alert( Ext.JSON.decode(txt)['name'] );//解码成一个对象(但是不是model,仅是原生Js对象)});});


三: 用localstorage代理 , 代替cookies

Ext.onReady(function(){//模型类 , 相当于classExt.define("person",{extend:"Ext.data.Model",fields:[        {name:'name',type:'string'},        {name:'age',type:'int'} ], //==>代理类 , 用Model类的load()方法获取数据 proxy:{ type:"localstorage"//,本地存储 , 目的是代替cookies不怕禁用cookies  .  //model: 配置可以省略, 因为就在本model之中//用 type:"ajax"的话需要配置 url:"fakeData.jsp"// type:"sessionstorage" 相当于session 关闭浏览器后会被删除 //id:"twitter-Searches" }})//==>model的集合是storevar store = Ext.create("Ext.data.Store",{model:person});//添加一条store.add({name:"store添加的", age:7 });//异步保存store.sync();//取出展示store.load();var msgArray = [];store.each( function(v){msgArray.push( v.get('name') + "__" + v.get('age'));});alert(msgArray.join("\n"));var p = Ext.ModelMgr.getModel( "person" );//传入名字p.load( null , {scope:this,failure:function(record , operation){alert(record);},success: function(record , operation){alert(record.data.name);},callback:function(record , operation){}});});

















原创粉丝点击