我不得不玩完原來給承包商工作的偉大的工作,但從未完成。不過,我現在被告知系統必須支持Firefox 3.6!不是很好,但不是我會失眠直到現在!系統具有使用FormData對象的Ajax函數,然後上載文檔(通常爲PDF)。我已經通過Firefox 3.6的跑了這一點,我得到以下FORMDATA沒有定義 - 火狐3.6.28替代
「沒有定義FORMDATA」
VAR FORMDATA =新FORMDATA($( '形式')[0]);
這很好,因爲我可以看到,這個對象是不支持的,我只需要使用不同的方法或集合的方式......我用這個:
var formData = Components.classes["@mozilla.org/files/formdata;1"]
.createInstance(Components.interfaces.nsIDOMFormData);
然而,這給了我以下錯誤!
權限遭拒,http://10.29.100.23:8080來獲得屬性 XPCComponents.classes
我不確定這是爲什麼?是路徑「@mozilla.org/files/formdata;1
」不正確的?我做了更多的研究,並且無處可去!所以,我當時想到了序列化形式改變後,到...
var formData = {};
$.each($('form')[0].serializeArray(), function(_, kv) {
if (formData.hasOwnProperty(kv.name)) {
formData[kv.name] = $.makeArray(formData[kv.name]);
formData[kv.name].push(kv.value);
}else {
formData[kv.name] = kv.value;
}
});
雖然這沒#牛逼錯誤Ajax的功能沒有上傳(我相信它不能識別或找到文件或它只是爲文件值收集一個字符串)。有沒有人對舊版瀏覽器的FormData替代方案有任何建議,尤其是Firefox 3.6--這是我必須支持的唯一舊瀏覽器。
** 更新 ****
這是形式的HTML頁面
<form action="" method="post" enctype="multipart/form-data" name="uploadForm" id="uploadForm" target="#">
<label for="fileField">Rechnung hochladen</label>
<input type="file" name="fileField" id="fileField">
<progress id="progressbar" class="progressbar_margin hidden"></progress>
</form>
表單中包含哪些元素?如果它們是非文件輸入,那麼應該可以使用$('theForm')。serialize()'作爲'.ajax()'調用的'data'屬性。 – Matt
表單很簡單,包含以下內容(請參閱原始問題) –
如果問題可以改爲「使用ajax進行文件上傳」,那麼這可能有所幫助:http://stackoverflow.com/questions/1686099/file-通過ajax-jQuery上傳http://valums.com/ajax-upload/頁面表示它支持firefox 3.6+。在https://github.com/bencolon/file-uploader上有一個顯然更新的fork –