ExtJS用formPanel来做为表单元素的容器。默认情况下,是使用Ajax异步提交。接下来,对formPanel的提交跟加载,做个小总结。

先来看布局代码

1 var frm
 2 Ext.onReady(function() {
 3     Ext.QuickTips.init();
 4     Ext.form.Field.prototype.msgTarget = 'under';
 5     new Ext.FormPanel({
 6         labelWidth: 75,
 7         id: 'frm',
 8         frame: true,
 9         title: 'simple form',
10         bodyStyle: 'padding: 5px',
11         width: 350,
12         defauls: { width: 230 },
13         defaultType: 'textfield',
14         applyTo: 'con',
15         autoHeight: true,
16         items: [
17             {
18                 fieldLabel: 'First Name',
19                 name: 'first',
20                 allowBlank: false
21             }, {
22                 fieldLabel: 'Last Name',
23                 name: 'last'
24             }, {
25                 fieldLabel: 'Company',
26                 name: 'company'
27             }, {
28                 fieldLabel: 'Email',
29                 name: 'email',
30                 vtype: 'email',
31                 allowBlank: false
32             }, {
33                 xtype: 'timefield',
34                 fieldLabel: 'Time',
35                 name: 'time',
36                 minValue: '8:00am',
37                 maxValue: '6:00pm',
38                 allowBlank: true
39             }
40         ],
41         buttons: [
42             { text: 'Save', handler: submit },
43             { text: 'load', handler: load },
44             { text: 'Reset', handler: reset }
45         ]
46     });
47     frm = Ext.getCmp('frm');
48 });

效果如下:

变量frm是全局变量,用以保存对formPanel的引用。

一、提交数据

1 function submit() {
 2     if (!frm.getForm().isValid()) return;
 3     frm.getForm().submit({
 4         waitMsg: '正在提交数据',
 5         waitTitle: '提示',
 6         url: 'submit.ashx',//这里没使用asp.net网页
 7         method: 'GET',//指定为GET方式时,url中指定的参数将失效,表单项转换成url中的key=value传递给服务,见http://blog.csdn.net/goodshot/article/details/9116973
 8         success: function(form, action) {
 9             Ext.Msg.alert('提示', '保存成功');
10         },
11         failure: function(form, action) {
12             Ext.Msg.alert('提示', '原因如下:' + action.result.errors.info);
13         }
14     });
15 }

服务器端代码:

1<%@ WebHandler Language="C#" Class="submit" %>
 2
 3using System;
 4using System.Web;
 5
 6public class submit : IHttpHandler {
 7    
 8    public void ProcessRequest (HttpContext context) {
 9        context.Response.ContentType = "text/json";
10        bool result = false;
11        // 简单的业务逻辑省略。可以从context.Request["表单的ID"]来读取从formPanel传递过来的表单值。
12        // 再根据这些值。做一系列的业务逻辑处理。
13        // 以下是提交成功与否,所做出的反馈。
14        if (result)
15        {
16            context.Response.Write("{ success: true, errors:{} }");
17        }
18        else
19        {
20            context.Response.Write("{ success: false, errors:{info: '错误了'} }");
21        }
22        
23    }
24 
25    public bool IsReusable {
26        get {
27            return false;
28        }
29    }
30
31}

注意,无论成功与否,服务器端返回的JSON代码,一定要符合如下格式(博主注:下面的error:{}不是必须的,不过http://blog.csdn.net/goodshot/article/details/9042771中的图片文档中也有提到,但是在实际测试时没有也可以通过):

{ success: true, errors: {} }

success属性用于指定操作是否成功,客户端以此来判断执行的success回调还是failure回调。errors是自定义的错误信息对象。可以向里面传递你想要传递给回调函数的信息。例子中,在errors中定义了一个info属性,返回到客户端,则可以通过回调参数(之前的success:等都是回调函数,见http://blog.csdn.net/goodshot/article/details/9116973下方红色字体)进行访问。比如。action.result.errors.info进行访问。

二、加载数据

客户端load函数,用以加载数据,并将数据加载到各个表单之中。

1 function load() {
 2     frm.getForm().load({
 3         waitMsg: '正在加载数据',
 4         waitTitle: '提示',
 5         url: 'Handler.ashx',
 6         method: 'GET',
 7         success: function(form, action) {
 8             Ext.Msg.alert('提示', '加载成功');
 9         }
10     });
11 }

服务端代码

1<%@ WebHandler Language="C#" Class="Handler" %>
 2
 3using System;
 4using System.Web;
 5
 6public class load : IHttpHandler {
 7    
 8    public void ProcessRequest (HttpContext context) {
 9        //string result = string.Format("{success: {0}, errors:{1}}", "false", "Hello world");
10        context.Response.ContentType = "text/json";
11        context.Response.Write(@"
12{
13    success: true,
14    data: { first: 'tom', last: 'king', company: 'microsoft', email: 'czclkg@21cn.com', time: '10:00am' }
15}
16");
17        
18    }
19 
20    public bool IsReusable {
21        get {
22            return false;
23        }
24    }
25
26}

注意,跟数据的提交一样,对于数据的加载,服务器端同样也要遵循一定的格式:

{ success: true, data: {表单id: 表单值} }

success属性作用同上。主要是data。data用以保存表单元素的数据。格式是将表单的id作为属性名称,表单值作为属性值。返回客户端后,ext自动分析data属性,并将各个表单值赋值到各个表单当中。

三、表单的重置

function reset() {
    frm.getForm().reset();
}

ExtJS表单提交与加载全攻略相关推荐

  1. php表单提交邮箱_最全实现dede订单表单提交发送到指定邮箱(附前台设置)

    打造销售型网站的订单系统.不是所有销售都有权限登陆网站后台查看订单,特别是外地出差时,用户下了订单后不能及时服务用户,可能会造成订单丢失.但dedecms默认的订单提交后只能在后台看到的,每次都要登陆 ...

  2. Cesium--倾斜摄影加载详细攻略

    效果图先行 这里是借用的一群里网友的数据. 几个概念重要的 摄影测量的格式 常见的有: osgb dae gltf b3dm -其他格式 这里我主要介绍OSGB格式的倾斜摄影测量 OSGB是OSG三维 ...

  3. 国内主流物流公司常用快递单号查询API接口全攻略

    此接口支持***顺丰.EMS.申通.圆通.韵达.汇通.中通.天天.德邦.极兔.京东.全峰***等主流快递公司 目的 便于用户理解快递单号查询接口作用并正确应用到实际场景. 接口作用 轨迹类接口包含:即 ...

  4. 32 位 Win7 用 4G 内存破解加去水印全攻略

    虽然现在64位操作系统可以很好的支持大容量内存,但是我们不得不提到现在64位的软件还不是非常的多,而且Vista和Win7的64位版本在兼容性上还是有所不足.另一反面,由于现在内存价格的走低,4GB容 ...

  5. ExtJS 表单 submit时错误处理

    这里不提success,提提Extjs 表单提交的failure方法. 在表单的提交中,当发生异常行为时通常分为三种情况 1. 无法连接到服务器 2. 表单验证错误 3. 业务逻辑错误 对应下面的代码 ...

  6. CodeMirror动态加载和表单提交

    在使用codemirror时, 其原理是根据form中的textarea标签,自动加载其内容,获得代码行的显示.(具体使用方式参见 codemirror官网使用手册 http://codemirror ...

  7. layui删除后刷新表格_layui form表单提交之后重新加载数据表格的方法

    如下图,在我们做高级查询的时候需要重新加载数据表格table.reload(); HTML form表单 菜单:  JS $(function () { //注意:这里是数据表格的加载数据,必须写 ...

  8. BJUI使用ajax异步表单提交时后台action要加@ResponseBody

    场景 在使用BJUI的ajaxform异步表单提交时,后台直接使用 @RequestMapping时不能正常回显消息. 知识储备 ajaxform异步表单提交 通过data属性使用(带验证): < ...

  9. extjs FormPanel更改为普通表单提交,提交到iframe显示

    BasicForm提交源代码: * @return {BasicForm} this */ submit : function(options){ options = options || {}; i ...

最新文章

  1. opencv实现二值图像细化的算法
  2. 图像腌膜Mask的常规操作你真的信手拈来吗?
  3. redis灵魂拷问:19图+11题带你面试通关
  4. 前端工程化系列[02]-Grunt构建工具的基本使用
  5. Numpy中的array
  6. shopee本土店怎么做,一些运营技巧分享
  7. 手把手教你建网站--程序小白适用篇
  8. [深度学习-理论篇]什么是卷积神经网络CNN
  9. centos7的telnet不通已经关闭防火墙,打开阿里云端口仍然ping不通的解决办法
  10. paypalsdk集成php,php核心paypal sdk
  11. rh系列服务器上电后按,SV12 RH系列机架服务器操作系统安装.pdf
  12. 计算机右键管理快捷键,鼠标右键菜单管理
  13. matlab怎么将程序加密,对于MATLAB M文件怎么加密
  14. visio 如何让箭头完全水平?
  15. SCI期刊图片分辨率与清晰度修改,以及拼图
  16. 【科软课程-信息安全】Lab13 Packet Sniffing and Spoofing
  17. Qt大屏电子看板系统源码
  18. 记录科研路上的第一篇也是最后一篇论文投稿全过程:《中国图象图形学报》投稿经验帖
  19. Red Hat Enterprise Linux 8.8 正式版
  20. 边缘计算与云计算的未来

热门文章

  1. 单多晶技术拉锯战升级
  2. 016医疗项目 数据字典(概念和在本系统中的应用)
  3. 一起Polyfill系列:让Date识别ISO 8601日期时间格式
  4. Exchange 2013 SP1部署系列7:发送连接器的配置
  5. 分布式数据库clickhouse、tidb、palo对比
  6. Spring MVC @RequestMapping Annotation示例
  7. Kubernetes 入门:运行不同类型的 Job
  8. mysql索引的增删_mysql索引的增删改查怎么实现?
  9. kubernetes(五)二进制安装-安装docker服务
  10. Github如何更新Fork的仓库