• EXTJS 表单提交


    EXTJS框架中,在提交表单时,可有3种方式:

    方法一: 普通的 Form 提交方式, 主要使用 form.submit() 方法来将表单提交到后台,在后台是根据表单的 name 属性来获取表单中元素的值 ,代码如下:

      1  Ext.onReady(function () {
      2             var formPanel = new Ext.create({
      3                 xtype: 'form',
      4                 id: 'multiColumnForm',
      5                 collapsible: false,
      6                 frame: true,
      7                 title: '用户注册表单',
      8                 bodyPadding: '5 5 0',
      9                  600,
     10                 fieldsDefaults: {
     11                     labelAlign: 'top',
     12                     msgTarget: 'side'
     13                 },
     14                 renderTo: 'regist_div',
     15                 // 提交表单
     16                 submit: function(){
     17                     //连接到服务器的url地址   
     18                     this.getEl().dom.action = 'your server url'; 
     19                     this.getEl().dom.method = 'post';
     20                     this.getEl().dom.submit();
     21                 },
     22                 items: [
     23                     {
     24                         xtype: 'textfield',
     25                         id: 'nameText',
     26                         name: 'nameText',
     27                         fieldLabel: '用户名',
     28                         allowBlank: false,
     29                         tooltip: '请输入注册用户名',
     30                         afterLabelTextTpl: required,
     31                         blankText: '请输入注册用户名',
     32                     },
     33                     {
     34                         xtype: 'textfield',
     35                         id: 'emailText',
     36                         name: 'emailText',
     37                         fieldLabel: 'Email',
     38                         allowBlank: false,
     39                         afterLabelTextTpl: required,
     40                         vtype: 'email',
     41                         tooltip: '请输入您的email 地址',
     42                         blankText: '请输入您的email 地址',
     43                     },
     44                     {
     45                         xtype: 'datefield',
     46                         id: 'birthdayText',
     47                         name: 'birthdayText',
     48                         fieldLabel: '出生日期',
     49                         tooltip: '请输入您的出生日期',
     51                     },
     52                     {
     53                         xtype: 'numberfield',
     54                         id: 'ageText',
     55                         name: 'ageText',
     56                         fieldLabel: '年龄',
     57                         value: 20,
     58                         tooltip: '请输入您的年龄',
     59                     },
     60                     {
     61                         xtype: 'textfield',
     62                         id: 'phoneText',
     63                         name: 'phoneText',
     64                         fieldLabel: '联系电话',
     65                         maxLength: 11,
     66                         tooltip: '请输入您的电话',
     67                         allowBlank: false,
     68                         afterLabelTextTpl: required,
     69                         blankText: '请输入您的电话',
     70                     },
     71                     {
     72                         xtype: 'button',
     73                         name: 'registButton',
     74                         id: 'registButton',
     75                         text: '保 存',
     76                          90,
     77                         height: 30,
     78                         handler: function () {
     79                            //表单验证
     80                             var isValid = this.up('form').getForm().isValid();
     81                             if(isValid){
     82                                formPanel.form.submit();
     83                               //Ext.get('regist_div').dom.submit();
     84                            }                      
     85                  }
     86                     },
     87                     {
     88                         xtype: 'button',
     89                         name: 'RegistButton',
     90                         text: '重 置',
     91                          90,
     92                         height: 30,
     93                         handler: reset
     94                     }]
     95             });
     96 
     97             function reset() {
     98                 formPanel.form.reset();
     99             }
    100         });


    方法二: 使用EXTJS框架中的 Ajax 方式来提交,但它不会提交整个表单,而是提交 params 参数中的数据, params 参数是个 json格式, 如果正确提交到了后台,不管后台是否成功执行,在后台返回时,都会执行 success 函数, 如果在提交进没有进入后台,就会执行failure 函数,这样一来,无法确定后台是否成功执行了,所以,在这里,要对方法进行调整,在后台成功执行时返回后,提示成功的消息,相反,如果执行失败,在返回后,提示执行失败的消息,这就要对 success 返回的参数进行判断, 在后台进行构造,如果后台执行成功,将声明一个变量,并赋值为 true, 如果后台执行失败,将返回 false, 在提交后返回提交的结果,具体代码如下:

      1   Ext.onReady(function () {
      2             var formPanel = new Ext.create({
      3                 xtype: 'form',
      4                 id: 'multiColumnForm',
      5                 collapsible: false,
      6                 frame: true,
      7                 title: '用户注册表单',
      8                 bodyPadding: '5 5 0',
      9                  600,
     10                 fieldsDefaults: {
     11                     labelAlign: 'top',
     12                     msgTarget: 'side'
     13                 },
     14                 renderTo: 'regist_div',
     15                 items: [
     16                     {
     17                         xtype: 'textfield',
     18                         id: 'nameText',
     19                         name: 'nameText',
     20                         fieldLabel: '用户名',
     21                         allowBlank: false,
     22                         tooltip: '请输入注册用户名',
     23                         afterLabelTextTpl: required,
     24                         blankText: '请输入注册用户名',
     25                     },
     26                     {
     27                         xtype: 'textfield',
     28                         id: 'emailText',
     29                         name: 'emailText',
     30                         fieldLabel: 'Email',
     31                         allowBlank: false,
     32                         afterLabelTextTpl: required,
     33                         vtype: 'email',
     34                         tooltip: '请输入您的email 地址',
     35                         blankText: '请输入您的email 地址',
     36                     },
     37                     {
     38                         xtype: 'datefield',
     39                         id: 'birthdayText',
     40                         name: 'birthdayText',
     41                         fieldLabel: '出生日期',
     42                         tooltip: '请输入您的出生日期',
     43 
     44                     },
     45                     {
     46                         xtype: 'numberfield',
     47                         id: 'ageText',
     48                         name: 'ageText',
     49                         fieldLabel: '年龄',
     50                         value: 20,
     51                         tooltip: '请输入您的年龄',
     52                     },
     53                     {
     54                         xtype: 'textfield',
     55                         id: 'phoneText',
     56                         name: 'phoneText',
     57                         fieldLabel: '联系电话',
     58                         maxLength: 11,
     59                         tooltip: '请输入您的电话',
     60                         allowBlank: false,
     61                         afterLabelTextTpl: required,
     62                         blankText: '请输入您的电话',
     63                     },
     64                     {
     65                         xtype: 'button',
     66                         name: 'registButton',
     67                         id: 'registButton',
     68                         text: '保 存',
     69                          90,
     70                         height: 30,
     71                         handler: function () {
     72                             var isValid=this.up('form').getForm().isValid();
     73                         console.log(isValid);
     74 
     75                         if(isValid){
     76                             var name = Ext.getCmp('nameText').getValue();
     77                             var email = Ext.getCmp('emailText').getValue();
     78                             var phone = Ext.getCmp('phoneText').getValue();
     79                             var password = Ext.getCmp('loginPassword').getValue();
     80 
     81                             Ext.Ajax.request({
     82                                 url: 'your server url',
     83                                 method: 'post',
     84                                 params: {
     85                                     'name': name,
     86                                     'email': email,
     87                                     'sex': sex,
     88                                     'phone': phone,
     89                                     'pwd': password
     90                                 },
     91                                 success: function (response, option) {
     92                                     var responseArray = Ext.util.JSON.decode(response.responseText);
     93                                     if (responseArray.success) {
     94                                         Ext.Msg.alert('提示', '提交成功');
     95                                     } else {
     96                                         Ext.Msg.alert('提示', '提交失败:'+ response.responseText);
     97                                     }
     98                                 },
     99 
    100                                 failure: function(response,option){
    101                                     Ext.Msg.alert('警告','数据处理发生错误:'+response.responseText)
    102                                 }
    103                             });
    104                         }
    105                         }
    106                     },
    107                     {
    108                         xtype: 'button',
    109                         name: 'RegistButton',
    110                         text: '重 置',
    111                          90,
    112                         height: 30,
    113                         handler: reset
    114                     }]
    115             });
    116 
    117             function reset() {
    118                 formPanel.form.reset();
    119             }
    120         });

    注意:后台返回的 json 格式 极为重要,不然前端不能正确解析   

    后台返回的数据格式为:    '{success:true, responseText: errorInfomation, data[{id: 3124}]}

  • 相关阅读:
    题解 P5320
    Codeforces 1500F
    三个 AGC D(AGC037D、AGC043D、AGC050D)
    Atcoder Regular Contst 084 D
    DG-基础知识点整理
    MySQL-数据恢复场景实验
    MySQL-查看Galera集群状态
    MySQL-运行日志切割
    MySQL-生产环境删除大表或大量binlog策略
    MySQL-基于(MySQL 5.7)NDB中启用共享权限表
  • 原文地址:https://www.cnblogs.com/wisdo/p/4896272.html
Copyright © 2020-2023  润新知