锁定老帖子 主题:AJAX与双FORM提交
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2007-04-20
现在是AJAX横行的时代,也许已经很少有人用隐藏form提交来实现不刷新页面更新了。 在AJAX以前,一般都是用隐藏form提交来实现页面不刷新提交数据,虽然那时候我也常用xmlhttp提交来实现,不过现在ajax概念流行,不用一下总好像你跟不上时代似的,老总会问“你用了ajax了没有”。 现在来对比一下ajax与隐藏form提交的利与弊。 1.隐藏form提交,更新数据完成后,需要转到一个空白页面再对原页面进行提交后处理;ajax则不用,可以直接返回原页面进行提交后的处理。可见ajax可以比隐藏form提交少增加一个页面。 2.ajax出于安全性考虑,不能对文件进行操作,所以就不能通过ajax来实现文件上传,而通过隐藏form提交则可以实现这个功能,所以这就是目前用隐藏form提交的主要用途。 现在接下来讲述如何通过隐藏form来实现文件上传 1)首先定义一个用于填写表单内容的form <form name="form1"></form> 2)接着定义一个用于提交的form <form name="form2" target="myIframe"> //用于指定提交返回的页面显示在这个隐藏的iframe中 <iframe name="myIframe" style="display:none"></iframe> //用于存放提交返回后的空白页面 <div id="formInner" style="display:none"></div> //用于获取form1的html内容,获得form1的表单元素 </form> 3)在form1提交时,进行如下javascript处理 var formInner= document.getElementById("formInner"); 4)提交后,进入后台处理,后台处理完成后,需要返回一个空白页面blank.jsp,这个页面是在隐藏的iframe中生成的,所以可以通过parent对象对原页面进行操作。 比如原页面定义了一个updatePageFromSubmit(),则在blank.jsp页面中可以通过parent.updatePageFromSubmit()来调用进行提交返回后 的处理 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2007-04-20
你的form2是放在一个隐藏的iframe中?
如果form1和form2在同一个页面,调用form2.submit不是一样会刷新页面吗? |
|
返回顶楼 | |
发表时间:2007-04-20
没太看懂,为什么要返回一个空白页面blank.jsp?
就一个上传页面,和原来上传一种写法。 自己写事件处理上传方法,取得页面中form 在form中插入iframe 取得form中src地址 将iframe的src设为form的src 在那个页面处理页面onload事件,判断有没有出错。。。 这样说起来看似有些麻烦,但封装好后,基本上不要其它开发人员写什么js了,偶们公司就是这么处理的 |
|
返回顶楼 | |
发表时间:2007-04-20
dengyin2000 写道 你的form2是放在一个隐藏的iframe中?
如果form1和form2在同一个页面,调用form2.submit不是一样会刷新页面吗? 他的意思是form2 提交到 一个iframe里面作为文件上传, 那 form1 提交 页面还是会跳转.... |
|
返回顶楼 | |
发表时间:2007-04-21
用xform比较简单.
如果浏览器不支持可以用 formfaces 一个用javascript实现的xform formfaces.js 不到100K http://www.formfaces.com/ |
|
返回顶楼 | |
发表时间:2007-04-23
事实上form2和form1都是在同一个页面中,但是form2的target指向了那个隐藏的iframe,这样form2在提交时,返回页面将会在隐藏的iframe里生成,而当前页面并不会刷新
|
|
返回顶楼 | |
发表时间:2007-04-23
to HexUzHoNG
你们的处理方法跟我的是同一个道理啊,只是你们在提交form时,动态生成一个iframe啊,我只是预先生成好了罢了,不过你们那样的做法,就可以做成一个通用的js供大家调用了。学习到 |
|
返回顶楼 | |
发表时间:2007-04-23
没太看懂
|
|
返回顶楼 | |
浏览 11091 次