当前位置:   article > 正文

ExtJs的数据代理proxy_extjs proxy输出结果

extjs proxy输出结果

数据代理proxy是进行数据读写的主要途径,通过代理操作数据进行CRUD ---增删改查

每一步操作全会得到唯一的Ext.data.Operation实例他包含了所有的请求参数

数据代理proxy目录结构

Ext.data.proxy.Proxy 代理类的根类(他分为客户端(Client)代理和服务器代理(Server))

       Ext.data.proxy.Client客户端代理

              Ext.data.proxy.Memory 普通的内存代理 ----[重点]

              Ext.data.proxy.WebStorage浏览器客户端存储代理

                     Ext.data.proxy.SessionStorage浏览器级别代理----[重点]  打开新的浏览器后不记录信息session级别

                     Ext.data.proxy.LocalStorage本地化的级别代理(不能夸浏览器)----[重点] 打开新的浏览器后记录原来信息cookie级别

       Ext.data.proxy.Server服务器端代理

              Ext.data.proxy.Ajax 异步加载的方式----[重点]

                     Ext.data.proxy.Rest一种特使的Ajax--[知道]

              Ext.data.proxy.JsonP 跨域交互的代理----[重点] 跨域是有严重的安全隐患的 extjs的跨域也是需要服务器端坐相应的配合

1.     普通代理 Memory

  1. (function(){
  2. Ext.onReady(function(){
  3. //定义user的model类
  4. Ext.regModel("user",{
  5. fields:[
  6. {name:"name",type:"string"},
  7. {name:"age",type:"int"}
  8. ]
  9. });
  10. //不用create方法我们直接用proxy来创建对象数据
  11. var userdata=[
  12. {name:"hanhan313",age:23},
  13. {name:"ecit",age:2}
  14. ];
  15. var memoryProxy=Ext.create("Ext.data.proxy.Memory",{
  16. data:userdata,
  17. model:"user"
  18. });
  19. //每一步操作全会得到唯一的Ext.data.Operation实例他包含了所有的请求参数
  20. //添加数据
  21. userdata.push({name:'newuspcat.com',age:1});
  22. //update
  23. memoryProxy.update(new Ext.data.Operation({
  24. action:'update', //指明操作的类型为更新
  25. data:userdata
  26. }),function(result){},this);
  27. //遍历
  28. memoryProxy.read(new Ext.data.Operation(),function(result){
  29. var datas = result.resultSet.records;
  30. Ext.Array.each(datas,function(model){
  31. alert(model.get('name'));
  32. });
  33. });
  34. });
  35. })();

结果:


2.     浏览器级别代理SessionStorage

  1. //Ext.data.proxy.SessionStorage浏览器级别代理----[重点] 打开新的浏览器后不记录信息session级别
  2. (function(){
  3. Ext.onReady(function(){
  4. //定义user的model类
  5. Ext.regModel("user",{
  6. fields:[
  7. {name:"name",type:"string"}
  8. ],
  9. proxy:{
  10. type:"sessionstorage", //代理的方式
  11. id:"localid" //唯一标示符id
  12. }
  13. });
  14. //使用store初始化数据
  15. var store=new Ext.data.Store({
  16. //数据模版
  17. model:"user"
  18. });
  19. //添加数据
  20. store.add({name:"hanhan313"});
  21. store.sync(); //保存数据
  22. store.load(); //加载数据
  23. var meg=[];
  24. store.each(function(rec){
  25. meg.push(rec.get("name"));
  26. });
  27. alert(meg.join("\n"));
  28. });
  29. })();

如果不关闭浏览器多次刷新的结果:


但是关闭浏览器后在浏览结果:


说明是以session的形式保存的

3.     本地化的级别代理LocalStorage

  1. //Ext.data.proxy.LocalStorage本地化的级别代理(不能夸浏览器)----[重点] 打开新的浏览器后记录原来信息
  2. (function(){
  3. Ext.onReady(function(){
  4. //定义user的model类
  5. Ext.regModel("user",{
  6. fields:[
  7. {name:"name",type:"string"}
  8. ],
  9. proxy:{
  10. type:"localstorage",
  11. id:"localid"
  12. }
  13. });
  14. //使用store初始化数据
  15. var store=new Ext.data.Store({
  16. //数据模版
  17. model:"user"
  18. });
  19. //添加数据
  20. store.add({name:"hanhan"});
  21. store.sync(); //保存数据
  22. store.load(); //加载数据
  23. var meg=[];
  24. store.each(function(rec){
  25. meg.push(rec.get("name"));
  26. });
  27. alert(meg.join("\n"));
  28. });
  29. })();

结果:


当关闭浏览器后再次打开访问结果会累加,相当于是以cookie的形式保存的

4.     异步加载的方式Ajax

  1. (function(){
  2. Ext.onReady(function(){
  3. Ext.regModel("person",{
  4. fields:[
  5. {name:'name',type:'string'}
  6. ]
  7. });
  8. //Ext.data.proxy.Ajax 异步加载的方式----
  9. var ajaxProxy = new Ext.data.proxy.Ajax({
  10. url:'index.jsp',
  11. model:'person', //读取模型
  12. reader:'json',
  13. limitParam : 'indexLimit'
  14. });
  15. //代理发送请求
  16. ajaxProxy.doRequest(new Ext.data.Operation({
  17. action:'read',
  18. limit:10, //分页的条数
  19. start :1, //从第一页开始查,limit和start会以两个参数向服务器发送
  20. sorters:[
  21. new Ext.util.Sorter({
  22. property:'name', //排序的属性
  23. direction:'ASC' //排序的方式
  24. })
  25. ]
  26. }),function(o){
  27. var text = o.response.responseText;
  28. alert(text);
  29. alert(Ext.JSON.decode(text)['name']); //使用decode编码后获取数据
  30. });
  31. });
  32. })();

index.jsp:

<%

response.getWriter().write("{name:'hanhan313',age:26,email:'605474293@qq.com'}");

%>

结果:


5.     跨域交互的代理JsonP

  1. (function(){
  2. Ext.onReady(function(){
  3. Ext.regModel("person",{
  4. fields:[
  5. {name:'name',type:'string'}
  6. ],
  7. proxy:{
  8. type:'jsonp',
  9. url:'http://www.uspcat.com/extjs/person.php'
  10. }
  11. });
  12. var person = Ext.ModelManager.getModel('person');
  13. person.load(1,{
  14. scope:this,
  15. success:function(model){
  16. alert(model.get('name'));
  17. }
  18. });
  19. })
  20. })();

person.php:

echo Ext.data.Jsonp.callback1({name:”hanhan313”});

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/繁依Fanyi0/article/detail/322255
推荐阅读
相关标签
  

闽ICP备14008679号