У меня есть отличная работа, заключающаяся в том, чтобы закончить работу, изначально порученную подрядчику, но так и не выполненную. Не проблема, однако мне сказали, что система должна поддерживать Firefox 3.6! Не здорово, но не то, из-за чего я бы потерял сон до сих пор! В системе есть функция Ajax, которая использует объект FormData, а затем загружает документ (обычно PDF). Я запустил это через Firefox 3.6 и получил следующее
"Данные формы не определены"
var formData = new FormData($('form')[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()
в качестве свойстваdata
вызова.ajax()
. - person Matt   schedule 09.05.2012