ajaxSubmit上傳文件出現下載提示框問題

今天在使用jquery.form插件的ajaxSubmit上傳文件時,在IE、chorme下測試,總是出現下載文件的提示框,谷歌百度了半天,基本沒有人說明是什麼緣由的,在查看了jquery.form的源碼時,發現了下面的代碼: html

if (options.iframe !== false && (options.iframe || shouldUseFrame)) {
        if (options.closeKeepAlive) {
            $.get(options.closeKeepAlive, function() {
                fileUploadIframe(a);
            });
        }
          else {
            fileUploadIframe(a);
          }
    }
    else if ((hasFileInputs || multipart) && fileAPI) {
        fileUploadXhr(a);
    }
    else {
        $.ajax(options);
    }
在ajaxSubmit提交表單的時候,若是表單內有文件上傳的話,會判斷參數是否配置的iframe爲false參數,若是沒有,會用建立隱藏iframe方式提交表單,若是設定了iframe爲false,則判斷瀏覽器是否支持HTML5的fileAPI,支持就直接使用XHR方式提交,不然就看成普通表單提交。

因此由於是用隱藏iframe提交的表單,若是服務器返回的是「application/json」類型的數據,IE和Chrome默認是下載文件的,由於內容是返回給了iframe,而不是ajaxSubmit的success方法。在iframe加載了返回結果後,ajaxSubmit的success方法是去讀取iframe的內容來轉換成json對象使用。 jquery

解決辦法就是,在ajaxSubmit提交表單的配置裏面,增長一個參數,服務器端判斷是不是ajaxSubmit提交過來的表單,是的話就返回「text/html」類型的內容,不是就能夠返回「application/json」的。 ajax

簡單的說就是ajaxSubmit上傳文件的話,返回的內容只能是網頁內容的,不然IE就有可能出現下載提示框。 json

相關文章
相關標籤/搜索