歲月如哥
          人生非夢
          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 歲月如歌 閱讀(3058) 評論(2)  編輯  收藏 所屬分類: java

          FeedBack:
          # re: 偽ajax方式提交帶文件上傳的表單
          2014-07-04 10:23 | 是地方噶是大方
          阿斯頓發撒旦方法  回復  更多評論
            
          # re: 偽ajax方式提交帶文件上傳的表單
          2014-11-20 10:32 | 2222
          人頂頂頂頂  回復  更多評論
            
          主站蜘蛛池模板: 射阳县| 尖扎县| 苏尼特左旗| 广宗县| 兰西县| 桐梓县| 灌云县| 剑川县| 盐池县| 临安市| 湖南省| 沙田区| 巍山| 崇仁县| 阳春市| 禄丰县| 金阳县| 微山县| 太仓市| 霍林郭勒市| 田阳县| 武冈市| 鸡西市| 和硕县| 德兴市| 彰化市| 汕尾市| 翁源县| 应用必备| 中宁县| 阿城市| 海丰县| 喀喇| 乌海市| 竹山县| 德格县| 嘉义县| 赤城县| 稷山县| 赣州市| 焦作市|