岁月如哥
人生非梦
posts - 50,comments - 144,trackbacks - 0

       
       在ajax还没有流行起来的时候,因为表单使用form的action进行页面跳转提交,所以不存在什么问题。


        自从ajax流行起来之后,一般的表单都是通过ajax方式提交,所以碰到带文件上传的表单就比较麻烦。后来在网上查了一下,基本都没有比较好的解决办法,所以还是对这种特殊的表单使用页面跳转方式提交。最近看到同事用一种伪ajax方式解决了此问题。其基本原理就是在页面增加一个隐藏iframe,然后通过ajax提交除文件之外的表单数据,在表单数据提交成功之后的回调函数中,通过form单独提交文件,而这个提交文件的form的target就指向前述隐藏的iframe。代码如下(注意form的target属性指向隐藏的iframe):

 

<form style="padding:0px;margin:0px;" target="upload" action="/xxx/xx.do" id="uploadForm" name="uploadForm" encType="multipart/form-data" method="post">
                 
<input  type="file" id=""attachFile/>
</form>

<iframe name="upload" style="display:none"></iframe>

      上述伪ajax方法的缺点是,表单数据和文件数据不能做到一个事物里面,如果后面文件上传失败(比如网络中断、服务器down掉等),则前面上传的表单数据算是垃圾数据了。当然这个在对数据一致性要求不是很高的环境,还是不错的解决办法。
posted on 2009-11-06 23:10 岁月如歌 阅读(3031) 评论(2)  编辑  收藏 所属分类: java

FeedBack:
# re: 伪ajax方式提交带文件上传的表单
2014-07-04 10:23 | 是地方噶是大方
阿斯顿发撒旦方法  回复  更多评论
  
# re: 伪ajax方式提交带文件上传的表单
2014-11-20 10:32 | 2222
人顶顶顶顶  回复  更多评论
  

只有注册用户登录后才能发表评论。


网站导航: