9

jQuery Malsup プラグインを使用して、フォーム データを ajax で投稿しました。 http://malsup.com/jquery/form/#api

フォームには、テキスト データとファイル データ (画像アップロード フィールド) の両方が含まれます。以前ajaxSubmit()はフォームデータを投稿していました。すべてのデータは、サーバー サイトの php で処理されます。

クロム、FF、IE8、IE9 で正常に動作します。画像アップロード フィールドを選択しない場合、ajax リクエストは IE10 で正常に動作します。しかし、画像が選択されると、IE10 はその開発ツールで保留中を示します。

ここでファイルのアップロード機能をテストできます。

http://malsup.com/jquery/form/#file-upload

4

2 に答える 2

1

フォームが GET または POST のどちらで送信されても​​、IE にはファイル データをサーバーに送信できるテキストの文字列に変換する手段がありません。

ページをリロードせずにファイル POST を実行するには、次のオブジェクトが必要です: FormData、XHR.upload、File.files。「XHR」は xmlHTTPRequest オブジェクト、「File」はファイル セレクターの DOM インスタンスです。

上記のいずれかがサポートされていない場合は、通常の形式の POST にフォールバックできます。

if (!self.FormData||!xhr.upload||document.getElementById('file').files) {
  document.getElementById('form').submit();
  return;
}

次に、フォーム データは次のように取得されます。

var fd=new FormData();
fd.append('file',document.getElementById('file').files[0]);
xhr.open('POST',...); //complete your Ajax post here
xhr.send(fd); //the form data is sent here, with the file

Ajax ファイル POST のメカニズムを説明したので、レベル 2 XHR 機能を持たないブラウザーをプラグインが既に処理している可能性があります。プラグインを埋め込むときは、プラグインが iFrame 内にあることを確認してください。ファイルが完全にアップロードされたときにメイン ページに通知する場合は、アップロード ハンドラ自体に JavaScript 呼び出しを埋め込みます。

parent.doneuploading();

ここで、doneuploading は、含まれているページで定義されている JavaScript 関数です。

また、注目に値するのは、

enctype="multipart/form-data"

フォームタグで。

于 2014-01-19T03:59:23.663 に答える
0

私は成功関数がajaxSubmitで呼び出されないという同じ問題を抱えていました。最終的に jquery フォーム プラグイン コードを調べたところ、 form method="post"を指定していない場合、65 行目で ajaxSubmit が強制的に GET を使用するようになりました。フォームがかなり大きい場合、get は失敗します。回避策は、フォーム要素で method="post" を使用することです。

于 2013-12-30T23:35:19.843 に答える