`
beckrabbit
  • 浏览: 127544 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

使用ext2的form提交表单(非AJAX方式)

阅读更多

虽然ext自带的ajax支持还是不错的,可我还是习惯用DWR来做AJAX,因为对于J2ee开发来说这无疑是最好的选择

ext的form提供了两种表单方式,一是ajax的另一种是非ajax的,前者要求服务端返回的数据一定要是json格式,这让我很不习惯,还是dwr的好...在这里用登录窗口的例子,说一下后者。

后台就不多说了,至少需要一个验证用户的service方法 boolean userlogin(String username,String password);

或者返回String类型给用户更详细的登录失败信息。

如果用Struts来做界面控制的话需要一个userlogin.do 获取form提交的username和password,调用service层的userlogin方法决定跳转的页面。

首先添加一个FORM,直接在JS里面写下面代码就可以生成一个FORM ,无需任何页面代码。

js 代码
  1. var simple = new Ext.form.FormPanel({
  2. labelWidth: 75, // label settings here cascade unless overridden
  3. url:'../userlogin.do',
  4. method:'POST',
  5. frame:true,
  6. title: '登录窗口',
  7. bodyStyle:'padding:5px 5px 0',
  8. width: 300,
  9. defaults: {width: 200},
  10. defaultType: 'textfield',
  11. //实现非AJAX提交表单一定要加下面的两行!
  12. onSubmit: Ext.emptyFn,
  13. submit: function() {
  14. //有疑问的地方
  15. this.getEl().dom.action='../userlogin.do';
  16. this.getEl().dom.submit();
  17. },
  18. items: [{
  19. fieldLabel: '用户名',
  20. id: 'username',
  21. allowBlank:false,
  22. width:150
  23. },{
  24. fieldLabel: '密码',
  25. id: 'password',
  26. allowBlank:false,
  27. width:150,
  28. inputType:'password'
  29. }
  30. ],
  31. buttons: [{
  32. text: '登录',
  33. type:'button',
  34. id:'login',
  35. handler: login
  36. },{
  37. text: '重置',
  38. type:'reset',
  39. id:'clear',
  40. handler: reset
  41. }
  42. ]
  43. });

这个就是ext2.0的form模型,使用了新的Ext.form.FormPanel做form,需要注意的是使用非ajax也就是传统方式的话一定要在form的属性加入这两行:

js 代码
  1. onSubmit: Ext.emptyFn,
  2. submit: function() {
  3. this.getEl().dom.submit();
  4. },

这是API里指定的用法,可是我这么做确不能正确提交FORM ,仔细检查后发现ext生成的html代码中这个form没有action项,只有id和method,通过form的url属性和在submit参数中直接添加url或者action貌似都不起作用。

所以我在这里又加了一句:this.getEl().dom.action='../userlogin.do';在提交表单的时候 直接把FORM的action属性设置到html里

这样就可以正确提交了,但不知道是不是最好的方法。

button的handler属性值确定了两个按钮按下时触发的方法。

js 代码
  1. function reset(){
  2. simple.form.reset();
  3. }
  4. function login(item){
  5. simple.form.submit();
  6. }
当然也可以在login中使用dwr进行ajax形式的表单提交。
分享到:
评论
19 楼 shazhenzhong 2008-12-23  
1 jsp页面
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<html>
<head>
    <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
    <title>修改密码</title>
    <link rel="stylesheet" type="text/css" href="${pageContext.request.contextPath}/jsp/resources/css/ext-all.css"/>
    <script type="text/javascript" src="${pageContext.request.contextPath}/jsp/adapter/ext/ext-base.js"></script>
    <script type="text/javascript" src="${pageContext.request.contextPath}/jsp/ext-all.js"></script>
<script type="text/javascript" src="${pageContext.request.contextPath}/jsp/hospital/layouts/password.js"></script>
</head>
<body>

</body>
</html>

2 使用的js
var simple;
Ext.onReady(function(){
var bd = Ext.getBody();
simple = new Ext.form.FormPanel({
labelWidth: 75, // label settings here cascade unless overridden
url:'./user.jsp',
method:'POST',
frame:true,
title: '修改密码', 
bodyStyle:'padding:5px 5px 0',
width: 300,
defaults: {width: 200},
defaultType: 'textfield',
//实现非AJAX提交表单一定要加下面的两行!
onSubmit: Ext.emptyFn,
submit: function() {
//有疑问的地方
this.getEl().dom.action='./user.jsp';
this.getEl().dom.submit();
},
items: [{
fieldLabel: '原始密码',
id: 'username',
allowBlank:false,
width:150
},{
fieldLabel: '新密码',
id: 'password',
allowBlank:false,
width:150,
inputType:'password'
},{
fieldLabel: '确认密码',
id: 'newpassword',
allowBlank:false,
width:150,
inputType:'password'
}
],
buttons: [{
text: '保存',
type:'button',
id:'login',
handler: login
},{
text: '重置',
type:'reset',
id:'clear',
handler: reset
}
]
});

simple.render(bd);

});
function reset(){
simple.form.reset();
}
function login(item){
simple.form.submit();

}
18 楼 gyb_sx 2008-07-03  
能不能也给我一份email:gyb_sx@126.com
谢谢
17 楼 yangfengjob 2008-06-02  
这个可以加上target=""吗.我想把返回的结果显示在另一个ifame中
16 楼 yangfengjob 2008-06-02  
this.getEl().dom.action='setReportParams';
this.getEl().dom.submit();
这两句是啥意思啊..
15 楼 JaNer 2008-05-26  
我也遇到了问题EXT + Struts的时候
这是我的旧命帖:
http://www.iteye.com/topic/196699
先用你的方法试试看~
14 楼 zhangygood 2008-03-26  
可以发给我一份吗?谢谢
zhangy1207@163.com
13 楼 kaki 2008-02-12  
前端本来就可以直接转换成json,为什么不用呢??
12 楼 SeanHe 2008-02-04  
function login(item){
simple.getForm().getEl().dom.action=......htm';
simple.getForm().getEl().dom.submit();
}

貌似这样写才能正确提交
11 楼 jansonzhan 2007-12-28  
可以发一份给我嘛?谢谢!
jansonzhan@126.com
10 楼 rwhanson 2007-12-21  
hi 兄弟,我初学ext2.0,正做这方面的项目,遇到了困难,
能不能给我发一份完整的代码.renwei0121@yahoo.com.cn
9 楼 liliang_xf 2007-12-19  
同上,LZ能不能也给我发一份。谢谢!
liliang_xf@163.com
8 楼 liliang_xf 2007-12-19  
同上, 能不能发一份完整的代码给我。
liliang_xf@163.com
7 楼 hanyuhaha 2007-12-06  
thanks
6 楼 andrewdu 2007-12-02  
因为你使用了var simple = new Ext.form.FormPanel({
所以submit的隐含方法应该是下面这个形式
submit: function() {
            this.getForm().getEl().dom.submit();
        }



如果你要使用下面的代码来提交
this.getEl().dom.submit();

那么你要使用Ext.form.BasicForm 来创建
5 楼 lcq2009 2007-11-22  
我也是Ext的FS,谢谢大家发这么好的例子[size=24][/size]
4 楼 lcq2009 2007-11-22  
哥们,把你写的这个例子发到我Email:lcq2009@163.com

里面一起研究这个Ext,这样我们都可以很好的交流,人多力量大,谢谢!
3 楼 beckrabbit 2007-11-03  
lzhxq 你用firebug看一下你的“this”指的是什么
如果this.getEl().dom得到的不是这个FORM的DOM当然不会有效果了
2 楼 lzhxq 2007-11-01  
试过你的方法增加:this.getEl().dom.action='../userlogin.do';
但是根本没有生成FORM的action。
1 楼 bhuang 2007-10-18  
初学中,我为什么运行你的代码不成功。能不能发一封完整的代码。

hbin81@163.com

谢谢!!

相关推荐

    完成的 Ajax 提交表单

    该例子是使用 Ajax 提交 Ext 表单,并通过 success 和 failer 返回相应的值。

    ext form 表单提交数据的方法小结

    EXT的form表单ajax提交(默认提交方式) 代码如下: 1. function login(item) { 2. 3. if (validatorForm()) { 4. // 登录时将登录按钮设为disabled,防止重复提交 5. this.disabled = true; 6. 7...

    ExtJSWeb应用程序开发指南(第2版)

    4.1.3 Ext.form.field.Base基础表单字段 4.1.4 Ext.form.field.Text文本域 4.1.5 Ext.form.field.TextArea文本区 4.1.6 Ext.form.field.Number数字输入框 4.1.7 Ext.form.field.Checkbox复选框和Ext.form.field....

    ext几个实例

    本篇是关于Ext.Ajax + Ext.FormPanel + MySQL数据库的完整登录案例,一个是html的form表单,一个是Ext的FormPanel表单,在提交或结合Ext.Ajax多少还是有区别的.

    Ext 开发指南 学习资料

    碰到使用ajax获得数据,或者提交数据出现乱码 A.8. TabPanel使用autoLoad加载的页面中的js脚本没有执行 A.9. 有关grid的一些小问题 A.9.1. 如何让grid总所有的列都支持排序 A.9.2. 修改一个grid的ColumnModel和...

    Ext+Jsp+Hibernate 学生信息管理

    界面不多,主要包括了Grid的使用,Form表单的使用,Ajax无刷新技术的运用。实现了数据列表及分页显示,数据的增删改,及grid与form的联动效果。 开发平台:WinXP+Tomcat6+MyEclipse6+SQLServer2005+Spket

    Ext+JS高级程序设计.rar

    8.2 Form表单组件 226 8.2.1 DisplayField控件 226 8.2.2 在FormPanel中使用TabPanel 229 8.2.3 DirectLoad与DirectSubmit 232 8.2.4 使用DirectSubmit上传文件 235 8.3 Grid组件 238 8.3.1 一个结合DataWrite和...

    Ext Js权威指南(.zip.001

    7.2.5 使用ajax处理数据的代理:ext.data.proxy.ajax与ext.data.proxy.rest / 308 7.2.6 跨域处理数据的代理:ext.data.proxy.jsonp / 312 7.2.7 为ext.direct服务的代理:ext.data.proxy.direct / 312 7.2.8 ...

    EXT2.0中文教程

    碰到使用ajax获得数据,或者提交数据出现乱码 A.8. TabPanel使用autoLoad加载的页面中的js脚本没有执行 B. 修改日志 C. 后记 C.1. 2007年12月5日,迷茫阶段 C.1.1. 仇恨 C.1.2. 反省 C.2. 关于ext与dwr整合部分的...

    PHP AjaxForm提交图片上传并显示图片

    本文实例为大家分享了PHP AjaxForm提交图片上传并显示图片的具体代码,供大家参考,具体内容如下 PHP dofile.php 文件上传源码 &lt;?php $file_upload = "upload/"; $file_allow_ext='gif|jpg|jpeg|png|gif|zip|rar...

    EXT教程EXT用大量的实例演示Ext实例

    碰到使用ajax获得数据,或者提交数据出现乱码 A.8. TabPanel使用autoLoad加载的页面中的js脚本没有执行 B. 修改日志 C. 后记 C.1. 2007年12月5日,迷茫阶段 C.1.1. 仇恨 C.1.2. 反省 C.2. 关于ext与dwr整合...

    精通JS脚本之ExtJS框架.part1.rar

    12.1.3 Ext.Ajax.request提交XML数据 12.2 Ext.Updater基础 12.2.1 Ext.Updater.update方法 12.2.2 Ext.Updater.update操作示例 12.3 利用Ajax优化Web应用框架 12.3.1 多级联动菜单 12.3.2 Ajax修改用户密码 ...

    精通JS脚本之ExtJS框架.part2.rar

    12.1.3 Ext.Ajax.request提交XML数据 12.2 Ext.Updater基础 12.2.1 Ext.Updater.update方法 12.2.2 Ext.Updater.update操作示例 12.3 利用Ajax优化Web应用框架 12.3.1 多级联动菜单 12.3.2 Ajax修改用户密码 ...

    ExtAspNet_v2.3.2_dll

    -使得Asp.net的控件ImageButton具有和Asp.net的Button控件类似的行为(Ajax提交)(feedback:261629698)。 +TabStrip增加GetAddTabReference和GetRemoveTabReference两个函数,用来向TabStrip控件动态增加删除Tab。...

    非常好的gwt-ext培训教程

    它扩展了 GWT,在 ExtJs 的基础上实现了有排序功能的表格(Grid)、分页、过滤,支持有拖拽功能的树,高度可定制的组合下拉框(Combobox)、目录、对话框、表单(Form)以及功能丰富、强大且易用的 API。 GWT-Ext ...

    Ext深入浅出 数据传输

    12.6 为表单添加提交事件............................. 332 12.7 清空表单信息........................................ 335 12.8 删除指定的学生信息............................. 336 12.9 在Grid和Form之间...

    ExtAspNet v2.2.1 (2009-4-1) 值得一看

    -这样所有需要占据全屏的Panel(不管你是Accordion,Panel,ContentPanel,Form,GroupPanel,SimpleForm,Tree还是Grid,TabStrip)都可以通过这种方式全屏。 -简单方便,示例可以参考 default.aspx 或者 other\...

    ExtJS4如何给同一个formpanel不同的url

    formpanel可以这样使用,api上的例子: 代码如下: var panel=Ext.create(‘Ext.form.Panel’, { title: ‘Simple Form’, bodyPadding: 5, width: 350, // 将会通过 AJAX 请求提交到此URL //url: ‘save-form.php’,...

    轻松搞定Extjs_原创

    二、Ext.form.FormPanel类 93 三、提交表单至服务器 97 四、小结 100 第十六章:更多表单组件 102 一、您能说出哪些表单组件呢? 102 二、表单组件关系图 102 三、组件配置选项介绍 103 四、完整源代码 107 五、小结...

    ASP.NET jQuery 实例2 (表单中使用回车在TextBox之间向下移动)

    form id=”form1″ runat=”server”&gt; ”center”&gt; &lt;fieldset xss=removed&gt; ”3″ cellspacing=”3″ border=”0″&gt; &lt;tr&gt; &lt;td&gt; ”lblName” Text=”姓名: runat=”server”&gt;&lt;/asp&gt; &lt;/td&gt; &lt;td&gt; &lt;asp:TextBox

Global site tag (gtag.js) - Google Analytics