2012-05-09 12 views
10

私は請負業者に元々与えられた仕事を仕上げなければならないという素晴らしい仕事を持っていますが、決して完了しませんでした。しかし問題はありませんが、私は今、システムがFirefox 3.6をサポートしなければならないと言われています!偉大ではないが、私は今まで眠れなくなるだろう!このシステムには、FormDataオブジェクトを使用してドキュメント(通常はPDF)をアップロードするAjax関数があります。 ([0] $( 'フォーム'))私は、Firefox 3.6を介してこれを走っていると私はFormDataが定義されていません - Firefox 3.6.28の代替


するvar FORMDATA =新しいいるFormDataを "いるFormDataが定義されていません" を取得します。私は、このオブジェクトがサポートされていないことを見ることができるように細かいです

、私はコレクションの異なる方法や手段を使用する必要があります...私はこれを使用:ただし、これは私を与えた

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" 間違っていた私はなぜわからないでしたか?私はより多くの研究を行い、どこにもいなかった!だから私は、フォームをシリアル化について考えは、Ajax機能をアップロードしていなかったこののdidn#tのエラー(私はそれが認識したり、ファイルを見つけることはなかったと推定またはそれがあったものの

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; 
    } 
}); 

...に次を変更しましたファイル値の文字列を収集するだけです)。古いブラウザ(特に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> 
+1

フォームにはどのような要素が含まれていますか?それらがファイル以外の入力であれば、 '$( 'theForm')。serialize()'を '.ajax()'呼び出しの 'data'プロパティとして使うことができます。 – Matt

+0

フォームはシンプルで、次のもので構成されています(オリジナルの質問を参照してください) –

+0

質問が「ファイルアップロードにajaxを使用する」と言い換えることができれば、これは役立ちます:http://stackoverflow.com/questions/1686099/file- upload-via-ajax-within-jquery http://valums.com/ajax-upload/ページには、firefox 3.6以降がサポートされています。 https://github.com/bencolon/file-uploaderには最新のフォークがあります。 –

答えて

0

フォームの内容です:

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

これも必ず実行してください:

  1. アドレスバーに「about:config」と入力してください。
  2. "signed.applets.codebase_principal_support"を検索してください。
  3. 値をtrueに設定します。

うまくいく、幸運。

3

FormDataは、XHR/Ajaxを使用してフォーム(ファイルアップロードを含む)を簡単に送信できるXMLHttpRequestレベル2インターフェイスです。あなたが発見したように、それはバージョン4以降のFirefoxでしか利用できません。 (MDN documentationにはブラウザの互換性表があります)

私はjQuery Form Pluginを試してみることをお勧めします。古いブラウザでファイルをアップロードするためのiframeフォールバックをサポートしています。

関連する問題