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页面,对于后台怎么获取有点想不起来了. 今天便做了几个实验,提交订单到后台,来掩饰后台如何接受表单内容: 实验 一 ...
随机推荐
- android学习笔记四
TextView.Button.CheckBox.RadoiButton.EditView.ImageButton.ToogleButton——略 AnalogClock.DigitalClock = ...
- 启动Memcache,出现memcached: error while loading shared libraries: libevent-1.4.so.1: cannot open shared
1.有可能是装了多个 libevent而导致memcache无法识别哪一个,解决方法就是卸载掉一个libevent 2.只安装了一个libevent,但是也报这个错,解决方法 32位系统下:ln ...
- nginx 出现 13: Permission denied
原文地址:http://www.nginx.cn/695.html 前段时间把程序员的wordpress升级到3.5.1,本身如果没有特别的插件,在后台更新就能完成. 更新完成后在后台发布文章,编辑器 ...
- [CSS]如何正确使用ID和Class?
作者:DarkZone链接:https://www.zhihu.com/question/19550864/answer/23440690来源:知乎 以下摘自<精通CSS:高级Web标准解决方案 ...
- PLSQL_数据泵定参数批量导入多表Expdp/Impdp Parfile(案例)
2015-04-01 Created By BaoXinjian
- CLR和JIT
在使用IDE进行编译的时候,这个过程具体的叫法是,使用编译器面向CLR来生成代码.对于不同的开发语言,使用的的编译器也不一样,但是生成的代码都一样. “无论选用哪一个编译器,结果都是一个托管模块.” ...
- CSS语法与用法小字典
前言:这是上学时期对CSS学习的整理,一直没见过光,由于不是专门做前端开发的,难免写不到重点,但对于看懂CSS,和掌握一些基本的用法,熟悉里面的门路还是大有裨益的.由于是从word中贴过来的,排版和格 ...
- Gatling的进阶二
1. 参数化 Gatling可以很方便使用csv文件进行参数化,例如一个用户信息表: /* user_information.csv */ username,password,accoun ...
- 怎样查看oracle当前的连接数
SQL> select count(*) from v$session #当前的连接数SQL> Select count(*) from v$session where status='A ...
- MYSQL C API : mysql_real_query()
enum enum_field_types { MYSQL_TYPE_DECIMAL, MYSQL_TYPE_TINY, MYSQL_TYPE_SHORT, MYSQL_TYPE_LONG, MYSQ ...