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页面,对于后台怎么获取有点想不起来了. 今天便做了几个实验,提交订单到后台,来掩饰后台如何接受表单内容: 实验 一 ...
随机推荐
- Python 创建和发布安装函数模块
1. create dir "nester" under C:\Users\eric\AppData\Local\Programs\Python\Python35-32\ 2. c ...
- 黄聪:如何阻止iframe里引用的网页自动跳转
今天做了个网页,要在网页里设置一个iframe,然后套用其他的网站.使用http://luanqi-cat.blogbus.com 这个网址的时候,出现了莫名其妙的问题,我的网页居然会强制自动跳转到这 ...
- POJ 1466 Girls and Boys 黑白染色 + 二分匹配 (最大独立集) 好题
有n个人, 其中有男生和女生,接着有n行,分别给出了每一个人暗恋的对象(不止暗恋一个) 现在要从这n个人中找出一个最大集合,满足这个集合中的任意2个人,都没有暗恋这种关系. 输出集合的元素个数. 刚开 ...
- poj 1011 Sticks
Sticks Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 126238 Accepted: 29477 Descrip ...
- [实变函数]4.1 可测函数 (measurable function) 及其性质
1 记号 (notations) (1) 广义实数: $\overline{\bbR}=\bbR\cup\sed{-\infty}\cup\sed{+\infty}$. (2) 本章主要考虑 ...
- linux shell 中的位置变量
对于linux shell 中的位置变量,我一直以来都是吐不出来又咽不下去,每次看到都不懂,不懂了就去百度google,看完了又忘,真是慢性咽炎啊.现在认真想想也是,其实自己一直以来都没有好好学习过, ...
- filter的执行顺序
一直没有仔细去研究下filter ,最近系统的测试了下: 先看代码吧 FirstFilter.java ================== package com.test.filter; impo ...
- Gradle学习
Gradle是一种构建工具,它抛弃了基于XML的构建脚本,取而代之的是采用一种基于Groovy的内部领域特定语言.近期,Gradle获得了极大的关注,这也是我决定去研究Gradle的原因. 这篇文章是 ...
- svn: Can't convert string from 'UTF-8' to native encoding 的解决办法
http://www.leakon.com/archives/610 http://www.toplee.com/blog/566.html http://svnbook.red-bean.com/e ...
- addSubView需要注意的几个点
addSubview: Adds a view to the end of the receiver’s list of subviews. 译:增加一个视图到接收者的子视图列表中. - (void) ...