私は、もともと請負業者に与えられたが完了しなかった仕事を終わらせなければならないという素晴らしい仕事をしています。問題はありませんが、システムは Firefox 3.6 をサポートする必要があると言われました! 素晴らしいことではありませんが、今まで眠れなかったものではありません! このシステムには、FormData オブジェクトを使用してドキュメント (通常は PDF) をアップロードする Ajax 関数があります。これを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;
}
});
これはエラーにはなりませんでしたが、Ajax 関数がアップロードしていませんでした (ファイルを認識または検索していないか、ファイル値の文字列を収集しているだけだと思います)。古いブラウザー、特に Firefox 3.6 での FormData の代替案に関する推奨事項はありますか?それは私がサポートしなければならない唯一の古いブラウザーです。
**アップデート****
これは 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>