- 浏览: 932189 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (251)
- WebService (17)
- IBatis (22)
- Hibernate (1)
- SpringMVC - 基础篇 (32)
- Spring (15)
- Java (11)
- JVM及调优 - 基础篇 (4)
- 集群 (14)
- 数据库 (17)
- WebSphere (5)
- 多线程 (4)
- 集合、容器 (2)
- DB Pool (1)
- Power Designer (5)
- Maven基础 (5)
- JS (14)
- WEB 前端 (5)
- 实用小工具 (17)
- 社会、人 (2)
- 乱七八糟 (18)
- ASM&CGLIB - 基础篇 (12)
- 缓存 (1)
- 性能 (1)
- 设计之殇 (1)
- 分布式事务 (1)
- 单点登录 (11)
- 分布式 Session (4)
- Memcached - 基础篇 (6)
最新评论
-
一笑_奈何:
楼主写的还真行不错。
扫盲贴 - J2EE集群之JNDI集群实现 -
xuezhongyu01:
博主写的很详细,但最后还是没明白,最后调用BasicDataS ...
Spring中的destroy-method方法 -
Mr梁:
commons-fileupload.jar commons- ...
SpringMVC 中文件上传 MultipartResolver -
Eywa:
总结的很不错
ORACLE CASE WHEN 及 SELECT CASE WHEN的用法 -
TryRelax:
fastjson 比 jackson 好用吧?
Spring MVC Jackson DateFormat
一、 EXT提交服务器的三种方式
1. EXT的form表单ajax提交(默认提交方式)
相对单独的ajax提交来说优点在于能省略写参数数组
FormPanel
在Ext中FormPanel并中并不保存表单数据,其中的数据是由BasicForm保存,在提交表单的时候需要获取当前 FormPanel中的BasicForm来进行提交.
获取FormPanel中的BasicForm对象代码如下:
var pnlLogin = new Ext.FormPanel({ //省略 }); //获取BasicForm对象 pnlLogin.getForm();
在获取BasicForm对象后便可进行表单的提交操作... 此时需要查一下BasicForm 的API文档, 文档中说,需要调用submit();方法进行提交:
BasicForm submit方法API 写道
submit( Object options ) : BasicForm
Shortcut to do a submit action.
Parameters:
* options : Object
The options to pass to the action (see doAction for details)
Returns:
* BasicForm
this
由API文档可以知道,submit方法实际上是调用了BasicForm的doAction()方法, 而doAction放法在API文档中的描述如下:
BasicForm doAction() API 写道
doAction( String/Object actionName, [Object options] ) : BasicForm Performs a predefined action (Ext.form.Action.Submit or Ext.form.Action.Load) or a custom extension of Ext.form.Action to perform application-specific processing. Parameters: * actionName : String/Object The name of the predefined action type, or instance of Ext.form.Action to perform. * options : Object (optional) The options to pass to the Ext.form.Action. All of the config options listed below are supported by both the submit and load actions unless otherwise noted (custom actions could also accept other config options): o url : String The url for the action (defaults to the form's url.) o method : String The form method to use (defaults to the form's method, or POST if not defined) o params : String/Object The params to pass (defaults to the form's baseParams, or none if not defined) o headers : Object Request headers to set for the action (defaults to the form's default headers) o success : Function The callback that will be invoked after a successful response. Note that this is HTTP success (the transaction was sent and received correctly), but the resulting response data can still contain data errors. The function is passed the following parameters: + form : Ext.form.BasicForm The form that requested the action + action : Ext.form.Action The Action class. The result property of this object may be examined to perform custom postprocessing. o failure : Function The callback that will be invoked after a failed transaction attempt. Note that this is HTTP failure, which means a non-successful HTTP code was returned from the server. The function is passed the following parameters: + form : Ext.form.BasicForm The form that requested the action + action : Ext.form.Action The Action class. If an Ajax error ocurred, the failure type will be in failureType. The result property of this object may be examined to perform custom postprocessing. o scope : Object The scope in which to call the callback functions (The this reference for the callback functions). o clientValidation : Boolean Submit Action only. Determines whether a Form's fields are validated in a final call to isValid prior to submission. Set to false to prevent this. If undefined, pre-submission field validation is performed. Returns: * BasicForm this
其实关于表单提交操作并没有结束, 从doAction方法的描述中可以看出.. 这里实际上是调用了Ext.form.Action这个类, 而submit操作是调用了该类的子类Ext.form.Action.Submit... 绕了一大圈,终于把Ext中FormPanel是如何提交表单的原理搞的差不多了.. 那么下来就可以上代码了:
var winLogin = new Ext.Window({ title:'登录', renderTo:Ext.getBody(), width:350, bodyStyle:'padding:15px;', id:'login-win', buttonAlign:'center', modal:true, items:[{ xtype:'form', defaultType:'textfield', bodyStyle : 'padding:5px', baseCls : 'x-plaints', url:'ajaxLogin.do', method:'POST', defaults:{ anchor:'95%', allowBlank:false }, items:[{ id:'loginName', name:'loginName', fieldLabel:'用户名', emptyText:'请输入用户名', blankText:'用户名不能为空' },{ id:'password', name:'password', fieldLabel:'密码', blankText:'密码不能为空' }] }], buttons:[{ text:'登录', handler:function(){ //获取表单对象 var loginForm = this.ownerCt.findByType('form')[0].getForm(); alert(loginForm.getValues().loginName); loginForm.doAction('submit', { url:'ajaxLogin.do', method:'POST', waitMsg:'正在登陆...', timeout:10000,//10秒超时, params:loginForm.getValues(),//获取表单数据 success:function(form, action){ var isSuc = action.result.success; if(isSuc) { //提示用户登陆成功 Ext.Msg.alert('消息', '登陆成功..'); } }, failure:function(form, action){ alert('登陆失败'); } }); this.ownerCt.close(); } }, { text:'重置', handler:function(){ alert('reset'); this.ownerCt.findByType('form')[0].getForm().reset(); } }] }); winLogin.show();
注意params:loginForm.getValues(),//获取表单数据的部分...
这里是得到BaiscForm中所有表单元素中的值,并且已String/Object键值对的形式保存。。 该方法在api文档中的描述如下:
BasicForm getValues API 写道
getValues( [Boolean asString] ) : String/Object Returns the fields in this form as an object with key/value pairs as they would be submitted using a standard form submit. If multiple fields exist with the same name they are returned as an array. Parameters: * asString : Boolean (optional) false to return the values as an object (defaults to returning as a string) Returns: * String/Object
如此提交解决了提交表单时无法发送数据的问题....
到这里终于解决了 如何提交表单的问题...
为什么没有执行submit中的success方法, failure方法是在什么时候会被执行..
这里还是需要 查Action类中的success属性的API文档描述...
success : Function The function to call when a valid success return packet is recieved. The function is passed the following parameters: * form : Ext.form.BasicForm The form that requested the action * action : Ext.form.Action The Action class. The result property of this object may be examined to perform custom postprocessing.
这里 success方法需要两个参数, 尤其是第二个参数的描述: 尤其result, 这里是可以点击的
点击后随即跳到了Action result属性的描述:
Action result属性 API 写道
result : Object The decoded response object containing a boolean success property and other, action-specific properties.
有此描述可知,服务器返回的响应中需要包含一个 boolean 型的 success 字段, 该字段会保存在result中,Action会通过获取对该字段的描述 来判断是否执行 success 方法。。
那么服务器如何返回boolean型的success字段呢? 服务器段部分代码如下:
try { //返回成功标识 <SPAN style="COLOR: #ff0000">response.getWriter().println("{success:true}");</SPAN> response.getWriter().flush(); } catch (IOException e) { e.printStackTrace(); } finally { try { response.getWriter().close(); } catch (IOException e) { e.printStackTrace(); } }
将按钮添加单击事件,执行以下方法
1. function login(item) { 2. 3. if (validatorForm()) { 4. // 登录时将登录按钮设为disabled,防止重复提交 5. this.disabled = true; 6. 7. // 第一个参数可以为submit和load 8. formPanl.form.doAction('submit', { 9. 10. url : 'user.do?method=login', 11. 12. method : 'post', 13. 14. // 如果有表单以外的其它参数,可以加在这里。我这里暂时为空,也可以将下面这句省略 15. params : '', 16. 17. // 第一个参数是传入该表单,第二个是Ext.form.Action对象用来取得服务器端传过来的json数据 18. success : function(form, action) { 19. 20. Ext.Msg.alert('操作', action.result.data); 21. this.disabled = false; 22. 23. }, 24. failure : function(form, action) { 25. 26. Ext.Msg.alert('警告', '用户名或密码错误!'); 27. // 登录失败,将提交按钮重新设为可操作 28. this.disabled = false; 29. 30. } 31. }); 32. this.disabled = false; 33. } 34. }
2. EXT表单的非ajax提交
在表单需加入下列代码
1. //实现非AJAX提交表单一定要加下面的两行! onSubmit : Ext.emptyFn, submit : function() { 2. //再次设定action的地址 3. this.getEl().dom.action ='user.do?method=login'; this.getEl().dom.method = 'post'; 4. //提交submit 5. this.getEl().dom.submit(); 6. },
3.EXT的ajax提交
1. 2. 3. Ext.Ajax.request({ 4. //请求地址 5. url: 'login.do', 6. //提交参数组 7. params: { 8. LoginName:Ext.get('LoginName').dom.value, 9. LoginPassword:Ext.get('LoginPassword').dom.value 10. }, 11. //成功时回调 12. success: function(response, options) { 13. //获取响应的json字符串 14. var responseArray = Ext.util.JSON.decode(response.responseText); 15. if(responseArray.success==true){ 16. Ext.Msg.alert('恭喜','您已成功登录!'); 17. } 18. else{ 19. Ext.Msg.alert('失败','登录失败,请重新登录'); 20. } 21. } 22. });
二、利用viewport布局左边区域系统菜单跳转两种方式
1,使用Ext.get('centerPanel').load(url:"aaa.jsp");url为必选参数还有其他可选参数 请参见api文档。缺点,加入的页面js无效
2,使用iframe,具体
Ext.get('centerPanel').dom.innerHTML='< i f r a m e src=aaa.jsp>< / i f r a m e >';
优 点可以在载入的页面动态加载js脚本(推荐使用)
发表评论
-
treegrid控件按条件查询和重加载的实现
2013-02-21 15:51 1801转载:http://www.iteye.com/topic/ ... -
TABLE 多表头固定问题(基本jquery插件)
2013-02-21 15:33 1847转载:http://www.cnblogs.com/dat ... -
Ext RowEditer.js 报错误this.items is undefined
2012-02-15 09:50 1610var editor = new Ext.ux.grid ... -
Ajax跨域访问解决方案
2012-02-14 14:09 5266一、为什么有跨域的问题 跨域问题存在实际上源 ... -
Extjs3.3.1扩展组件 BufferView
2012-02-07 11:34 2127一、现状情况 目前遇到一个这样的需求:大概有几千多 ... -
Extjs Tree简单使用
2012-01-11 11:35 4012一、 效果图: js部分: var ... -
全同运算符 "==="
2012-01-11 10:44 974在JavaScript中,"==="是全同 ... -
Ext 统计行
2011-12-08 14:06 1408统计行不参与grid中行的排序。 ExtJs统计行展示 ... -
ExtJS中Ext.Ajax.request与form1.getForm().submit
2011-11-20 00:10 2143相同点:都属于Ajax提交方式! 不同点:Ext.Aja ... -
Ext出现的问题:this.dom is undefined
2011-11-14 15:08 4101问题描述: 首先一个带有grid的页面,此页面弹 ... -
JSP引入含有ExtJs定义的组件的js文件并同步请求
2011-10-27 11:05 3000经常遇到这样的情况 ... -
js取当前url参数
2011-07-20 17:20 1993js没有提供取当前url参数的方法,只能是自己从中截取了,在网 ... -
ajax同步请求和异步请求
2011-07-02 11:18 3743ajax同步和异步的差异, 先看2段代码: 代码一: ...
相关推荐
EXT框架(通常指的是Ext JS)作为一种成熟且功能丰富的JavaScript库,提供了强大的UI组件和便捷的数据处理方法,其中就包括了异步提交FORM表单的功能。 #### 二、EXT异步提交FORM表单的基本原理与实现 ##### 2.1 ...
### EXT的三种提交方式详解 #### 一、Form提交 在EXT框架中,`form`提交是一种常见的数据提交方式,这种方式通常与HTML表单元素相结合,实现数据的有效性和完整性验证之后的数据提交。以下是对该部分代码的具体...
通常,Ext JS的表单提交使用Ajax方式,这意味着它可以异步地将表单数据发送到服务器,无需页面刷新。这种方式提供了更好的用户体验,因为用户可以在数据提交的同时继续与应用交互。 在Ext JS中,表单(`Ext.form....
其中,`form.submit()`是Ext默认的提交方式,它利用Ajax技术进行数据传输,无需刷新整个页面即可完成数据的提交和响应处理,极大地提升了用户体验。 - **原始的Form提交**:直接使用HTML表单的`submit`方法,适用于...
综上所述,`Ext+JSP`的组合提供了一种有效的方法来处理Web应用中的数据提交。通过前端`Ext`的交互性和数据管理,配合后端`JSP`的业务处理能力,能够构建出功能强大且用户体验良好的Web应用。在实际项目中,开发者...
当我们讨论EXT提交表单与ASP.NET的结合时,主要涉及的是EXTJS如何与ASP.NET后端进行数据交互。EXTJS 提供了表单组件(FormPanel)来创建和处理用户输入,而ASP.NET则处理这些数据并进行业务逻辑处理或数据持久化。 ...
其中,我们可以看到Ext.Ajax可以实现动态与静态的方式提交到web服务器。从中可以看出,其实Ext框架可以非常方便的与现有网站集成。关于Ext.data.Store类,我们可以看出:该框架提供了客户端缓存的功能--这对于我们...
Ext Direct是一种JavaScript和服务器之间通信的技术,它提供了预定义的API调用模式,简化了AJAX交互,并优化了Web应用程序的数据交换。 在ASP.NET MVC中,控制器负责处理HTTP请求并返回视图或数据。然而,当涉及到...
EXT3.0是一种基于JavaScript的富互联网应用程序(RIA)框架,专用于构建功能强大的桌面级Web应用程序。EXT3.0登录实例是EXT框架中的一个基础应用案例,它展示了如何使用EXT库来创建用户认证系统,这在Web开发中是至...
DWR(Direct Web Remoting)则提供了一种安全的、跨域的JavaScript到Java的通信方式,常用于处理异步数据请求。 Store的请求方式多样,包括简单加载(load)、远程排序和过滤(remoteSort和remoteFilter)、分页...
在EXTJS中,异步提交数据是常见的操作,主要用于与服务器...如果需要创建复杂的表单并利用EXT JS的组件功能,第三种方式更合适。在处理失败情况时,通常都需要提供错误处理回调函数,以确保用户体验和数据的一致性。
与HTML form表单不同,EXTJS的Ext.FormPanel提供了一种更灵活的方式来构建和管理表单。在示例中,FormPanel被放置在一个居中显示的层内。当用户点击登录按钮时,Ext.FormPanel的submit方法会触发异步提交,同样使用...
"ExtAjax表单提交"是EXTJS中的一个重要功能,用于处理用户在网页上的表单数据,并通过Ajax方式向服务器发送请求,实现异步数据交互。 在EXTJS中,表单(Ext.form.Panel)是数据输入和展示的主要组件。它包含了各种...
6. **Ajax和RESTful交互**:EXT提供了便捷的Ajax接口,便于与服务器进行异步通信,同时支持RESTful API,简化了后端数据的获取和操作。 7. **高级布局管理**:EXT的布局管理器可以处理复杂的页面布局,如网格布局、...
在“ExtJs4.0 表单提交Demo”中,我们将深入探讨如何在ExtJs 4.0环境下,通过Ext Ajax模块实现表单的数据提交,同时实现显示层和控制层的分离,提升代码的可维护性和可扩展性。 1. **ExtJs 4.0 表单基础** ExtJs ...
对于数据管理,Ext 2.1提供了Store对象,它可以存储和管理数据,与服务器进行异步通信。Store可以连接到各种数据源,如JSON、XML或CSV,并且与数据网格、表单和其他组件无缝集成。 在UI设计方面,Ext 2.1提供了大量...
Ajax通信组件如`Ext.Ajax`提供了一种方便的方式来发送异步请求,并处理服务器响应。 此外,`Ext.form.FormPanel`和相关组件允许创建复杂的表单,支持验证和数据提交。拖放功能允许用户通过简单的拖动操作来交互,...
EXT表单,是一种基于JavaScript和Ajax技术的富客户端(Rich Client)表单处理技术,它源自EXT JS库,专门用于构建交互性强、用户体验优秀的Web应用程序。EXT JS是一个强大的JavaScript库,提供了一系列组件化的UI...
本文主要总结了EXT表单提交数据的三种常见方法:EXT的form表单AJAX提交、非AJAX提交以及EXT的Ajax类直接提交。 1. EXT的form表单AJAX提交(默认提交方式) EXT的form表单默认采用AJAX方式进行数据提交,这样可以在...