EXTJS系列笔记(4.X)————Ext.data.proxy.Ajax 的CRUD操作及sync()的作用

Extjs+lazarus:CRUD网页的快速实现 由于lazarus中的例子: lazarus\fpc\2.6.0\source\packages\fcl-web\examples\webdata\demo 用的extjs是3.4版,在新的extjs4.2环境下不能运行,费了好大劲,终于搞定。期间到laz英文论坛提问,可能跟我英文差有关吧,一个回答的都没有。搞定后,版主又要我进行了“ open a new issue in the bugtracker and add a diff with the changes ”。本着互助、共享的原则,整个东西放到lazarus中文社区论坛,欢迎大家不断改善源码,提高性能,并且将改善后的源码进行共享。 我的环境:winxp,lazarus1.1,fpc2.6.0,apache2.2,extjs4.2。 不要犯怵,安装配置很简单,运行这个demo一行代码都不需要编写。后面我会详细讲安装运行方法。 安装配置: 1、安装Apache。下载地址:http://www.fayea.com/apache-mirror//httpd/binaries/win32/httpd-2.2.22-win32-x86-openssl-0.9.8t.msi 其他版本我没试过,高版本的应该可以。 我安装到了D:\apache2.2 2、下载安装Extjs4.2。下载地址:http://cdn.sencha.io/ext-4.2.0-beta.zip?ref=extjs.org.cn 下载后,解压缩,文件夹复制到 D:\apache2.2\htdocs\,然后改名为Ext。 3、下载附件。 原来的lazarus demo 源码未做任何修改,直接编译即可。编译之前需要安装weblaz和lazwebextra两个包。 本文附件中已经有extgrid.exe,可以直接使用。 将extgrid.exe和users.dbf复制到 apache2.2\cgi-bin 目录下。 将附件中其余文件复制到 apache2.2\htdocs\demodbf 目录下。 好了,全部配置完成。 4、启动Apache,访问:http://localhost/demodbf/extgrid-json.html 立即下载

CRUD操作指的是create , update,read , destroy四个操作。指的是对ExtJs的前台数据Store的增加,修改,加载(load,也可以说是查询),删除四个操作。下面先看使用实例,首先要现在store里面定义api。

[javascript] view plain copy  print?

  1. var grid = Ext.create('Ext.tree.Panel', {  
  2.            store:Ext.create('Ext.data.TreeStore', {  
  3.                autoLoad:true,  
  4.                model: 'home.menu',  
  5.                root:{  
  6.                    menu_id:0,  
  7.                    menu_name:'ROOT'  
  8.                },  
  9.                proxy:{  
  10.                    type:'ajax',  
  11.                    api:{  
  12.                        create:'create.action',  
  13.                        update:'update.action',  
  14.                        read:'read.action',  
  15.                        destroy:'destroy.action'  
  16.                    },  
  17.                    reader:{  
  18.                        root:'result',  
  19.                        totalProperty:'totalCount'  
  20.                    }  
  21.                }  
  22.            }),  

上面代码的意思是在store中定义当我们对store进行add(),updaterecord(),load(),remove()四个操作时相对应的操作URL。下面是extjsAPI里面的定义

[javascript] view plain copy  print?

  1. api : Object  
  2.   
  3. 指定的urls中所调用的CRUD,即"create","read","update"和"destroy"操作方法。默认为:  
  4.   
  5. api: {  
  6.     create  : undefined,  
  7.     read    : undefined,  
  8.     update  : undefined,  
  9.     destroy : undefined  
  10. }  
  11.   
  12. 该url的生成基于使用对应的api属性中所执行[create|read|update|destroy]的动作action, 或者如果为undefined则默认为已配置的 Ext.data.Store.url。  
  13.   
  14. 示例:  
  15.   
  16. api: {  
  17.     create  : '/controller/new',  
  18.     read    : '/controller/load',  
  19.     update  : '/controller/update',  
  20.     destroy : '/controller/destroy_action'  
  21. }  
  22.   
  23. 如果指定的URL对于所给定CRUD动作为undefined, 那么CRUD的action请求将指向已配置的url。  

下面是使用的DEMO、

 

修改(update   U):

 

[javascript] view plain copy  print?

  1. form.getForm().updateRecord(form.getForm().getRecord());  
  2. grid.getStore().sync();  

删除(destory  D)

 

 

[javascript] view plain copy  print?

  1. var r = form.getForm().getRecord();  
  2. r.remove();  
  3. grid.getStore().sync();  

加载(Read   R )

 

 

[javascript] view plain copy  print?

  1. grid.getStore().load();  


增加(Create  C)

 

 

[javascript] view plain copy  print?

  1. grid.getStore().add(form.getForm().getValues());  
  2. grid.getStore().sync();  

[javascript] view plain copy  print?

  1. 不懂大家注意到了没有 在CUD操作后,都有一个sync()操作。如果在store中设置了autoSync:true的话。就可以省略sync()操作。下面是autoSync的API解释:  
  2. <a target="_blank" href="http://extjs.org.cn/extjs/4.1/doc/#%21/api/Ext.data.AbstractStore-cfg-autoSync" class="name expandable">autoSync</a><span> : <a target="_blank" href="http://extjs.org.cn/extjs/4.1/doc/#%21/api/Boolean" rel="Boolean" class="docClass">Boolean</a></span><div class="description"><div class="long"><p>'true'表示每当对一条Record记录完成修改后, 都将对Store与Proxy进行同步. 默认为'false'.</p><p>Defaults to: <code>false</code></p></div></div>  

最后还有一点需注意的是:除了R是get请求外,CUD操作传到后台的数据都是以字符流的形式传输的。不是以post/get的方式传输的。

所以后台如果用java的servlet接收的话用service方法,代码如下:

 

		String line = null;
		StringBuffer sb = new StringBuffer();
		BufferedReader reader = request.getReader();
		while((line=reader.readLine())!=null){
			sb.append(line);   
		}
		System.out.println(sb.toString());String line = null;
		StringBuffer sb = new StringBuffer();
		BufferedReader reader = request.getReader();
		while((line=reader.readLine())!=null){
			sb.append(line);   
		}
		System.out.println(sb.toString());

 

 

 

 

 

 

 

PHP接收CUD传送的数据的代码:

 

 

[php] view plain copy  print?

  1. public function getPut()  
  2.     {  
  3.         $raw = '';  
  4.         $fp = fopen('php://input', 'r');  
  5.         while ($kb = fread($fp, 1024)) {  
  6.             $raw .= $kb;  
  7.         }  
  8.         $params = json_decode($raw, true);  
  9.         if (count($params) && !isset($params[0])) {  
  10.             $params = array($params);  
  11.         }  
  12.         $_POST['php_input'] = $raw;  
  13.         return $params;  
  14.     }  

基本上CRUD的操作的注意点都在这里了。不足的我会慢慢补充,求指正

跟着团子学SAP CO:揭秘结果分析码在项目结算中的实战应用(一)KKA2/CJ88 本文深入解析了SAP CO模块中结果分析码在项目结算中的核心作用。以KKA2(方法10)和事务代码CJ88为例,详细阐述了如何在项目完工后一次性确认收入的场景下,通过结果分析功能实现收入与成本的精准匹配,将项目成本暂估为在制品,确保各期利润的准确反映。 阅读详情

相关推荐

修复zookeeper未授权访问漏洞

【代码】修复zookeeper未授权访问漏洞。

qq_28392947的博客 4069

ExtJs的CRUD操作及sync()的作用

CRUD操作指的是create , update,read , destroy四个操作。指的是对ExtJs的前台数据Store的增加,修改,加载(load,也可以说是查询),删除四个操作。下面先看使用实例,首先要现在store里面定义api。 var grid = Ext.create('Ext.tree.Panel', { store:Ext.create('Ext.da

蚂蚁的窝 4866

DB2__基本概念——联邦

建立联邦 优点:优点是数据仍然保留在原来的存储位置,而不必建立一个集中的式数据仓储。  缺点:数据联邦查询反映会慢,不适合频繁查询,而且容易出现锁争用和资源冲突等问题 建立联邦表步骤 前提条件:知道两个数据库的ip,用户名,密码及被连数据库的版本 eg:  数据库  qqdb  ip: 22.5.225.225   端口:50000    密码:123456        数据库   ...

qq_38569524的博客 1257

extjs 解决使用store.sync()方法更新item有时不触发后台action的问题

问题描述: extjs 解决使用store.sync()方法更新item有时不触发后台action,不出发后台action的原因是item的字段值没有变化 解决方法: item.setDirty(true) 追查问题步骤 1、store.sync()方法 this_.win.store.sync({ ...

Liu0165的博客 546

Mac Pro M2芯片成功安装麒麟银河高级服务器虚拟机

本人用的是1、Macbook m2pro芯片 16G+5123、安装homebrew、wegt、qemu。

vagatable_XX的博客 3306

AutoSAR开发实战:如何用Matlab/Simulink从零搭建SWC组件(附完整代码示例)

本文详细介绍了使用Matlab/Simulink从零开发AutoSAR SWC组件的全流程,包括环境配置、ARXML文件导入、算法模型开发、代码生成与集成验证等关键步骤。通过实战案例和完整代码示例,帮助开发者掌握AutoSAR标准下的软件开发技术,提升汽车电子系统的开发效率。

weixin_29093017的博客 256

extjs4.2 关于sync()

关于ext4.2上可编辑grid 批量保存数据时 调用grid.store.sync()方法时 当grid上

QL0929的专栏 1653

2025华为OD机试真题最新题库 (B+C+D+E+2025A+2025B卷) + 在线OJ在线刷题使用(C++、Java、Python C语言 JS合集)(正在更新2025B卷,目前已收录710道)

2024年,华为目前已经启用D卷,目前D卷和C卷的题目一样一次订阅永久阅读,支持在线刷题,持续更新,有问题随时解答,本专栏题目数量已收录到484道。每篇文章的思路分析都非常详细,题目新增图解思路,问题解疑,多样例测试,超过百字的思路参考解析。

KJ.JK 11万+

ext文件系统

Linux 以文件的形式对计算机中的数据和硬件资源进行管理,也就是彻底的一切皆文件,反映在 Linux 的文件类型上就是:普通文件、目录文件(也就是文件夹)、设备文件、链接文件、管道文件、套接字文件(数据通信的接口)等等。Linux 上的文件系统一般来说就是 EXT2/3/4。 EXT 是 延 伸 文 件 系 统 ( 英 语 : Extended file system,缩写为 ext 或 ext1),也译为扩展文件系统,一种文件系统,于 1992 年 4 月发表,是为 linux 核心所做的第一个文件系统

m0_65931372的博客 3332

【超详细】计算机组成原理总结及思维导图

计算机组成 第一章 计算机系统概论 冯诺依曼型计算机特点 1.计算机由运算器,控制器,存储器,输入和输出设备5部分组成 2.采用存储程序的方式,程序和数据放在同一个存储器中,并以二进制表示。 3.指令由操作码和地址码组成 4.指令在存储器中按执行顺序存放,由指令计数器(即程序计数器PC)指明要执行的指令所在的储存单元地址,一般按顺序递增,但可按运算结果或外界条件而改变 5.机器以运...

圣三一 10万+

车载软件架构 —— AUTOSAR Vector SIP包(三)

### 上一篇文章中介绍了AUTOSAR基础软件供应商Vector公司的开发工具链,本文将继续介绍Vector公司的AUTOSAR产品。 ### -> 1、Vector SIP包中的StartApplication ### -> 2、StartApplication如何开始使用

Soly_kun的博客 831

extjs proxy post

extJs store的proxy,里面的read方式,默认是”get”方式。也就是说,用extjs向后台请求数据,默认是”get”方式,有关参数,要附在请求URL后面。这毕竟不方便,尤其是参数比较多的情况。能不能用post的方式呢?“可以的”,西蒙说。上代码://列表1 var HyStore = new Ext.data.Store({ autoDestroy: true, pageSi

左直拳的马桶_日用桶 1702

出现 Transaction rolled back because it has been marked as rollback-only 解决方法

出现 Transaction rolled back because it has been marked as rollback-only 解决方法

码农研究僧的博客 1万+

extjs proxy api使用 sync同步时后台接受数据方法

首先要明确store在sync时,传数据不是普通的请求参数传递的,所以在参数里也是找不到的。   时通过payload传输的,这样后来就要通过BufferedReader 来读取数据。   结合网上资料,本人亲测如下方法可以获取sync的数据    public static String getSyncData(HttpServletRequest request) throws I

事多易忘、提笔留忆 3794

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

ExtJs store.sync() 出现indexof not defined错误

form表单新增一条数据:var values = form.getValues(); var record = Ext.create('model',values); store.add(record); store.sync(); 在执行sync()的时候,控制台报错误: 后来发现错误出在对于record的

g535879的专栏 547

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

extjs4关于proxy中设置idProperty,后store增加数据不能sync()的问题

今天遇到一个很奇怪的问题,form新增一条记录后,产生一个model,然后加到store中提交 var model = Ext.create('Model‘, form.getForm().getValues()); grid.store.add(model); grid.store.sync(); store.sync()怎么样都不执行,看了例子都是对的,后来查了不少

jfok的专栏 8342

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

玩转extjs5之Ext.data.proxy.Ajax(六)

AjaxProxy(Ajax数据代理类)是应用程序中使用最广泛的获取数据的方式. 它使用AJAX请求来从服务器获取数据, 然后通常将它们放入 Store中. 例如: Ext.define('User', { extend: 'Ext.data.Model', fields: ['id', 'name', 'email'] }); //一个包含AjaxProxy代理的Store,

六指琴魔 4488

Ext.data.proxy.Ajax代理

Ext.data.proxy.Ajax代理是一个在应用程序中使用最为广泛的服务端代理,采用Ajax方式通过请求指定的URL来读写数据,但是不能跨域读取数据,如果需要读取跨域数据可以使用Ext.data.proxy.JsonP代理。 Ext.onReady(function () { //创建数据模型 Ext.regModel("Person", { fileds:

Mars的专栏 3481

ExtJs 同步与异步请求

同步方式请求:(关键是要设置false这个参数) var conn = Ext.lib.Ajax.getConnectionObject().conn; conn.open("GET", 'your url',false); conn.send(null); alert(conn.responseText);或者 var conn = Ext.lib.Ajax.getC

龙井的专栏 2911

[Extjs6]浅谈Ext.data.Store的使用.

定义modelExt.define('Example.model.Contact', { extend: 'Ext.data.Model', fields: ['id', 'name', 'phone', 'email'] });创建store//方式一 var exampleStore = Ext.create('Ext.data.Store',{ model: 'Exam

u010989191的博客 9072

Extjs 轻松实现同步

Extjs 轻松实现同步         由于在做一个项目时需要用到ajax同步问题,但我采用的是Extjs框架,extjs本身并没有为我们提供同步的方法,所以我们需要一个外部的插件js来实现既---- ext-basex.rar ,将包里的ext-basex.js 引入工程即可    实现方法:           var conn = Ext.lib.Ajax.getConnectio...

ljchzzu的专栏 492

ExtJs的数据代理proxy

数据代理proxy是进行数据读写的主要途径,通过代理操作数据进行CRUD ---增删改查 每一步操作全会得到唯一的Ext.data.Operation实例他包含了所有的请求参数 数据代理proxy目录结构 Ext.data.proxy.Proxy 代理类的根类(他分为客户端(Client)代理和服务器代理(Server))        Ext.data.proxy.Client客户端代理

hanhan313的专栏 1万+

ExtJs6 理解 -- Ext.data.proxy.Proxy

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_34050005的博客 350
上一篇: 怎么将Extjs6.0应用在myeclipse中的项目,包括spket插件
下一篇: ORA-00257 archiver error. 错误的处理方法
阿尔卑斯0283
博客等级 码龄14年 51粉丝 103原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值