32

FormDataは IE 8/9 には存在しませんが、それらのブラウザーでその機能が必要です。これに対する素晴らしいフォールバックはありますか?

json データを送信しようとしますが、ファイルをサーバーに渡す必要があります。このファイルをformData最新のブラウザに追加して、XHRリクエストを送信するだけです。FormDataIE 8/9 には存在しないため、これは明らかに失敗します。

// I cant seem to get this to work with a file.
$.ajax({
    url: '/genericHandlers/UploadDocsFile.ashx',
    type: "POST",
    data: model.toJSON(),
    contentType: 'application/json'
    }).done(function  (data) { 
       log('stuff happened!');
    });

おそらく代替手段は、jsで偽のフォームオブジェクトを作成し、それにデータを追加することですか?

4

3 に答える 3

8

私は考えられる解決策を 1 つしか知りませんが、実際には IE の 1 対 1 のフォールバックではありません。FormData を使用する最近のブラウザーのように、古いブラウザーでは入力フィールドをバインドできないため、ファイルを送信するための可能な通信 API はありません。ただし、iframe を使用してフォーム全体を送信することはできます。この場合、 XHR DataForm と iframe をサポートするjquery.formプラグインを使用できます (ブラウザーが FormData API をサポートしていない場合、データは iframe で送信されます)。

于 2012-08-05T06:57:21.467 に答える