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

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

  Ext.onReady(function () {
var formPanel = new Ext.create({
xtype: 'form',
id: 'multiColumnForm',
collapsible: false,
frame: true,
title: '用户注册表单',
bodyPadding: '5 5 0',
width: ,
fieldsDefaults: {
labelAlign: 'top',
msgTarget: 'side'
},
renderTo: 'regist_div',
// 提交表单
submit: function(){
//连接到服务器的url地址
this.getEl().dom.action = 'your server url';
this.getEl().dom.method = 'post';
this.getEl().dom.submit();
},
items: [
{
xtype: 'textfield',
id: 'nameText',
name: 'nameText',
fieldLabel: '用户名',
allowBlank: false,
tooltip: '请输入注册用户名',
afterLabelTextTpl: required,
blankText: '请输入注册用户名',
},
{
xtype: 'textfield',
id: 'emailText',
name: 'emailText',
fieldLabel: 'Email',
allowBlank: false,
afterLabelTextTpl: required,
vtype: 'email',
tooltip: '请输入您的email 地址',
blankText: '请输入您的email 地址',
},
{
xtype: 'datefield',
id: 'birthdayText',
name: 'birthdayText',
fieldLabel: '出生日期',
tooltip: '请输入您的出生日期',
},
{
xtype: 'numberfield',
id: 'ageText',
name: 'ageText',
fieldLabel: '年龄',
value: ,
tooltip: '请输入您的年龄',
},
{
xtype: 'textfield',
id: 'phoneText',
name: 'phoneText',
fieldLabel: '联系电话',
maxLength: ,
tooltip: '请输入您的电话',
allowBlank: false,
afterLabelTextTpl: required,
blankText: '请输入您的电话',
},
{
xtype: 'button',
name: 'registButton',
id: 'registButton',
text: '保 存',
width: ,
height: ,
handler: function () {
//表单验证
var isValid = this.up('form').getForm().isValid();
if(isValid){
formPanel.form.submit();
//Ext.get('regist_div').dom.submit();
}
}
},
{
xtype: 'button',
name: 'RegistButton',
text: '重 置',
width: ,
height: ,
handler: reset
}]
}); function reset() {
formPanel.form.reset();
}
});

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

   Ext.onReady(function () {
var formPanel = new Ext.create({
xtype: 'form',
id: 'multiColumnForm',
collapsible: false,
frame: true,
title: '用户注册表单',
bodyPadding: '5 5 0',
width: ,
fieldsDefaults: {
labelAlign: 'top',
msgTarget: 'side'
},
renderTo: 'regist_div',
items: [
{
xtype: 'textfield',
id: 'nameText',
name: 'nameText',
fieldLabel: '用户名',
allowBlank: false,
tooltip: '请输入注册用户名',
afterLabelTextTpl: required,
blankText: '请输入注册用户名',
},
{
xtype: 'textfield',
id: 'emailText',
name: 'emailText',
fieldLabel: 'Email',
allowBlank: false,
afterLabelTextTpl: required,
vtype: 'email',
tooltip: '请输入您的email 地址',
blankText: '请输入您的email 地址',
},
{
xtype: 'datefield',
id: 'birthdayText',
name: 'birthdayText',
fieldLabel: '出生日期',
tooltip: '请输入您的出生日期', },
{
xtype: 'numberfield',
id: 'ageText',
name: 'ageText',
fieldLabel: '年龄',
value: ,
tooltip: '请输入您的年龄',
},
{
xtype: 'textfield',
id: 'phoneText',
name: 'phoneText',
fieldLabel: '联系电话',
maxLength: ,
tooltip: '请输入您的电话',
allowBlank: false,
afterLabelTextTpl: required,
blankText: '请输入您的电话',
},
{
xtype: 'button',
name: 'registButton',
id: 'registButton',
text: '保 存',
width: ,
height: ,
handler: function () {
var isValid=this.up('form').getForm().isValid();
console.log(isValid); if(isValid){
var name = Ext.getCmp('nameText').getValue();
var email = Ext.getCmp('emailText').getValue();
var phone = Ext.getCmp('phoneText').getValue();
var password = Ext.getCmp('loginPassword').getValue(); Ext.Ajax.request({
url: 'your server url',
method: 'post',
params: {
'name': name,
'email': email,
'sex': sex,
'phone': phone,
'pwd': password
},
success: function (response, option) {
var responseArray = Ext.util.JSON.decode(response.responseText);
if (responseArray.success) {
Ext.Msg.alert('提示', '提交成功');
} else {
Ext.Msg.alert('提示', '提交失败:'+ response.responseText);
}
}, failure: function(response,option){
Ext.Msg.alert('警告','数据处理发生错误:'+response.responseText)
}
});
}
}
},
{
xtype: 'button',
name: 'RegistButton',
text: '重 置',
width: ,
height: ,
handler: reset
}]
}); function reset() {
formPanel.form.reset();
}
});

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

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

EXTJS 表单提交的更多相关文章

  1. Extjs 表单提交送给新手

    Extjs的三种提交方式: 表单Ajax提交,普通提交,单独Ajax提交: 1.表单ajax提交(默认提交方式) 提交函数:当按下表单中的提交按钮时执行下面的btn函数,按照表单的name进行提交.提 ...

  2. ExtJS 表单 submit时错误处理

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

  3. Extjs之表单提交

    Extjs的三种提交方式: 表单Ajax提交,普通提交,单独Ajax提交: 表单Ajax提交(默认提交方式) 提交函数:当按下表单中的提交按钮时执行下面的 btn函数,按照表单的 name进行提交. ...

  4. Extjs表单控件入门

    ExtJs表单控件用formPanel来做为表单元素的容器.默认情况下,是使用Ajax异步提交. 大家知道要使用Extjs必须引入他的库,所以我们要引入以下几个文件: ext-all.css ext- ...

  5. extjs表单验证

    extjs表单验证 //放在onReady的function(){}中 Ext.QuickTips.init(); //为组件提供提示信息功能,form的主要提示信息就是客户端验证的错误信息. Ext ...

  6. from表单提交数据之后,后台对象接受不到值

    如果SSH框架下,前段页面通过from表单提交数据之后,在后台对象显示空值,也就是接收不到值得情况下.首先保证前段输入框有值,这个可以在提交的时候用jQuery的id或者name选择器alert弹出测 ...

  7. 不使用Ajax,如何实现表单提交不刷新页面

    不使用Ajax,如何实现表单提交不刷新页面? 目前,我想到的是使用<iframe>,如果有其他的方式,后续再补. 举个栗子: 在表单上传文件的时候必须设置enctype="mul ...

  8. golang-web框架revel一个表单提交的总结

    这里要介绍好是revel框架的表单post提交的列子,主要是用于入门学习,和一些知识点的讲解: 首先: 来了解一个问题那就是重复提交表单,做过form表单提交的同学都知道,如果表单提交后不做处理,那么 ...

  9. 关于我们经常用到的form表单提交

    工作中遇到了太多太多的表单提交问题,曾经学过一个HTML的表单提交给 另外一个HTML页面,对于后台怎么获取有点想不起来了. 今天便做了几个实验,提交订单到后台,来掩饰后台如何接受表单内容: 实验 一 ...

随机推荐

  1. 黄聪:jquery mobile使用form进行post提交表单没有反应,显示空白页解决方案

    jquery mobile这货会自动用Ajax方式. 所以需要在表单form标签添加data-ajax="false"这个元素. <form method="pos ...

  2. ASP.NET MVC之从控制器传递数据到视图四种方式

    前言 本系列开始着手讲述ASP.NET MVC,也算是自己对基础的回顾以及进一步深入学习,保证每天发表一篇该系列文章,关于基本知识则不再叙述,园子有关文章不胜枚举,这一系列若有叙述不当或错误之处,欢迎 ...

  3. [物理学与PDEs]第5章习题参考解答

    [物理学与PDEs]第5章习题1 矩阵的极分解 [物理学与PDEs]第5章习题2 Jacobian 的物质导数 [物理学与PDEs]第5章习题3 第二 Piola 应力张量的对称性 [物理学与PDEs ...

  4. iis7 500错误日志报 LOG_FILE_MAX_SIZE_TRUNCATE

    参考:http://blogs.iis.net/robert_mcmurray/freb-log-file-max-size-truncate cd /d "%windir%\system3 ...

  5. 问对于一个给定的n,怎样才能用最少的步骤将它变到1

    如果n为偶数,则将它除以2,如果n为奇数,则将它加1或者减1.问对于一个给定的n,怎样才能用最少的步骤将它变到1.例如:n= 61n-- 60n/2 30n/2 15n++ 16n/2 8n/2 4n ...

  6. repo安装

    repo是使用python开发的一个用于多版本管理的工具,可以和git协作,简化git的多版本管理. repo安装: 1.新建~/bin,并将此目录包含在path变量中(如果已存在,且已在path变量 ...

  7. json字符串转json对象的方法

    在使用$.ajax()方法时,我们可以设置dataType:'json'的参数,便可以拿到后台返回的json数据对应的json对象.但有时,我们拿到的是json字符串,需要将它再转成json对象来使用 ...

  8. ruby 字符串学习笔记1

    1 从一种数据结构中构件字符串 hash = { key1: "val1", key2: "val2" } string = "" hash ...

  9. 从0到1搭建移动App功能自动化测试平台(0):背景介绍和平台规划

    本文作者: 伯乐在线 - debugtalk .未经作者许可,禁止转载!欢迎加入伯乐在线 专栏作者. 转载地址:http://blog.jobbole.com/101221/ 背景 最近新加入DJI的 ...

  10. C++学习40 抛出自己的异常

    throw 是C++中的关键字,用来抛出异常.如果不使用 throw 关键字,try 就什么也捕获不到:上节提到的 at() 函数在内部也使用了 throw 关键字来抛出异常. throw 既可以用在 ...