FormData не определен - Firefox 3.6.28 альтернатива

У меня есть большая работа, чтобы закончить работу, первоначально предоставленную подрядчику, но никогда не завершалась. Не проблема, однако мне сказали, что система должна поддерживать Firefox 3.6! Не здорово, но я не потерял сон до сих пор! Система имеет функцию Ajax, которая использует объект FormData, а затем загружает документ (обычно это PDF). Я запускал это через Firefox 3.6, и я получаю следующее

"FormData не определен"
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;
    }
});

хотя ошибка did not # t не была загружена функцией 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>

Ответ 1

FormData - это интерфейс XMLHttpRequest Level 2, который упрощает отправку формы (включая загрузку файлов) с использованием XHR/Ajax. Как вы обнаружили, он доступен только в Firefox начиная с версии 4 и далее. (документация MDN имеет таблицу совместимости браузера.)

Я предлагаю попробовать jQuery Form Plugin. Он поддерживает резерв iframe для загрузки файлов в старых браузерах.

Ответ 2

Я думаю, вы должны использовать это перед своим кодом:

netscape.security.PrivilegeManager.enablePrivilege(
    'UniversalXPConnect'
);

Чтобы это сделать также:

  • введите "about: config" в адресной строке;
  • искать "signed.applets.codebase_principal_support";
  • Задайте значение true:

Надеюсь, что это сработает, удачи.