歲月如哥
          人生非夢(mèng)
          posts - 50,comments - 144,trackbacks - 0

                 
                 在ajax還沒有流行起來(lái)的時(shí)候,因?yàn)楸韱问褂胒orm的action進(jìn)行頁(yè)面跳轉(zhuǎn)提交,所以不存在什么問題。


                  自從ajax流行起來(lái)之后,一般的表單都是通過ajax方式提交,所以碰到帶文件上傳的表單就比較麻煩。后來(lái)在網(wǎng)上查了一下,基本都沒有比較好的解決辦法,所以還是對(duì)這種特殊的表單使用頁(yè)面跳轉(zhuǎn)方式提交。最近看到同事用一種偽ajax方式解決了此問題。其基本原理就是在頁(yè)面增加一個(gè)隱藏iframe,然后通過ajax提交除文件之外的表單數(shù)據(jù),在表單數(shù)據(jù)提交成功之后的回調(diào)函數(shù)中,通過form單獨(dú)提交文件,而這個(gè)提交文件的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方法的缺點(diǎn)是,表單數(shù)據(jù)和文件數(shù)據(jù)不能做到一個(gè)事物里面,如果后面文件上傳失敗(比如網(wǎng)絡(luò)中斷、服務(wù)器down掉等),則前面上傳的表單數(shù)據(jù)算是垃圾數(shù)據(jù)了。當(dāng)然這個(gè)在對(duì)數(shù)據(jù)一致性要求不是很高的環(huán)境,還是不錯(cuò)的解決辦法。
          posted on 2009-11-06 23:10 歲月如歌 閱讀(3052) 評(píng)論(2)  編輯  收藏 所屬分類: java

          FeedBack:
          # re: 偽ajax方式提交帶文件上傳的表單
          2014-07-04 10:23 | 是地方噶是大方
          阿斯頓發(fā)撒旦方法  回復(fù)  更多評(píng)論
            
          # re: 偽ajax方式提交帶文件上傳的表單
          2014-11-20 10:32 | 2222
          人頂頂頂頂  回復(fù)  更多評(píng)論
            
          主站蜘蛛池模板: 太仓市| 车险| 潜山县| 贞丰县| 静海县| 武胜县| 东兰县| 九龙坡区| 剑阁县| 吉安县| 莱西市| 蚌埠市| 苏尼特左旗| 临朐县| 浑源县| 揭西县| 仙桃市| 巴彦淖尔市| 辽阳市| 手游| 绍兴县| 曲松县| 乌拉特前旗| 浮山县| 邵东县| 晋州市| 茶陵县| 湟源县| 三都| 舒城县| 湘潭县| 工布江达县| 兰西县| 唐河县| 合川市| 邹平县| 玉林市| 东莞市| 十堰市| 五河县| 万荣县|