EXTJS 表单提交
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 表单提交的更多相关文章
- Extjs 表单提交送给新手
Extjs的三种提交方式: 表单Ajax提交,普通提交,单独Ajax提交: 1.表单ajax提交(默认提交方式) 提交函数:当按下表单中的提交按钮时执行下面的btn函数,按照表单的name进行提交.提 ...
- ExtJS 表单 submit时错误处理
这里不提success,提提Extjs 表单提交的failure方法. 在表单的提交中,当发生异常行为时通常分为三种情况 1. 无法连接到服务器 2. 表单验证错误 3. 业务逻辑错误 对应下面的代码 ...
- Extjs之表单提交
Extjs的三种提交方式: 表单Ajax提交,普通提交,单独Ajax提交: 表单Ajax提交(默认提交方式) 提交函数:当按下表单中的提交按钮时执行下面的 btn函数,按照表单的 name进行提交. ...
- Extjs表单控件入门
ExtJs表单控件用formPanel来做为表单元素的容器.默认情况下,是使用Ajax异步提交. 大家知道要使用Extjs必须引入他的库,所以我们要引入以下几个文件: ext-all.css ext- ...
- extjs表单验证
extjs表单验证 //放在onReady的function(){}中 Ext.QuickTips.init(); //为组件提供提示信息功能,form的主要提示信息就是客户端验证的错误信息. Ext ...
- from表单提交数据之后,后台对象接受不到值
如果SSH框架下,前段页面通过from表单提交数据之后,在后台对象显示空值,也就是接收不到值得情况下.首先保证前段输入框有值,这个可以在提交的时候用jQuery的id或者name选择器alert弹出测 ...
- 不使用Ajax,如何实现表单提交不刷新页面
不使用Ajax,如何实现表单提交不刷新页面? 目前,我想到的是使用<iframe>,如果有其他的方式,后续再补. 举个栗子: 在表单上传文件的时候必须设置enctype="mul ...
- golang-web框架revel一个表单提交的总结
这里要介绍好是revel框架的表单post提交的列子,主要是用于入门学习,和一些知识点的讲解: 首先: 来了解一个问题那就是重复提交表单,做过form表单提交的同学都知道,如果表单提交后不做处理,那么 ...
- 关于我们经常用到的form表单提交
工作中遇到了太多太多的表单提交问题,曾经学过一个HTML的表单提交给 另外一个HTML页面,对于后台怎么获取有点想不起来了. 今天便做了几个实验,提交订单到后台,来掩饰后台如何接受表单内容: 实验 一 ...
随机推荐
- HDU3530 子序列
题目大意:给出一串长度为n的整数串,求最长的一个连续子序列,满足该序列中最大的元素与最小的元素之差大于等于m, 并且小于等于k.n<=100000 分析:维护两个单调队列,一个递增的,维护最小值 ...
- 使用express搭建第一个Web应用【Node.js初学】
来源:http://jingyan.baidu.com/article/bad08e1ee501e009c8512106.html express是一个开源的node.js项目框架,初学者使用expr ...
- C语言中字符串常量到底存在哪了?
常量存储总结局部变量.静态局部变量.全局变量.全局静态变量.字符串常量以及动态申请的内存区 1.局部变量存储在栈中2.全局变量.静态变量(全局和局部静态变量)存储在静态存储区3.new申请的内存是在堆 ...
- 怎样减少FLASH影片文件过大——绝对好用
网站建设中怎样减少FLASH影片文件过大 一,制作前的处理 1声音(mp3): GoldWave中打开需要处理的mp3,然后把它另存为---在最下一栏的属性中选择较低的字节数,例如,本来的mp3 ...
- php全角字符转换为半角函数
<?php /** * 全角字符转换为半角 * * @param string $str * @return string public function Sbc2Dbc($str) { $ar ...
- .NET简谈构件系统开发模式
转自[王清培] http://www.cnblogs.com/wangiqngpei557/archive/2011/06/14/2080416.html 在本人的“.NET简谈插件系统开发模式”一文 ...
- android 通知
https://developer.android.com/design/patterns/notifications.html 通知系统可让用户随时了解应用中的相关和即时事件,例如来自好友的新聊天信 ...
- VC++、MFC、COM和ATL的区别
今天看到的,感觉不错.转载了 一.什么是MFC 微软基础类(Microsoft Foundation Classes),实际上是微软提供的,用于在C++环境下编写应用程序的一个框架和引擎,VC++是W ...
- storm的作业单元:Topology
Storm系统的数据处理应用单元,是被打包的被称为Topology的作业. 它是由多个数据处理阶段组合而成的,而每个处理阶段在构造时被称为组件(Component),在运行时被称为任务. 那么,组件根 ...
- BIP_开发案例04_通过BI Publisher实现打印报表的二维码(案例)(待整理)
2014-01-01 Created BaoXinjian