検索

ホームページ  >  に質問  >  本文

Ajax を使用してデータとファイルを同時にアップロードするにはどうすればよいですか?

<p>jQuery と Ajax を使用してデータとファイルを送信していますが、データとファイルの両方を 1 つのフォームで送信する方法がわかりません。 </p> <p>現在、両方のメソッドをほぼ同じ方法で使用していますが、データを配列に収集する方法が異なり、データは <code>.serialize();</code> を使用し、ファイルは <code> を使用します。 ;= 新しい FormData($(this)[0]);</code></p> <p>これら 2 つの方法を組み合わせて、Ajax 経由で 1 つの形式でファイルとデータをアップロードすることは可能ですか? </p> <p><strong>データ jQuery、Ajax、html</strong></p> <pre class="brush:php;toolbar:false;">$("form#data").submit(function(){ var formData = $(this).serialize(); $.ajax({ URL: window.location.pathname, タイプ: 'POST'、 データ: フォームデータ、 非同期: false、 成功: 関数 (データ) { アラート(データ) }、 キャッシュ: false、 contentType: false、 プロセスデータ: false }); false を返します。 }); <フォーム id="データ" メソッド="投稿"> <input type="text" name="first" value="ボブ" /> <input type="text" name="middle" value="ジェームズ" /> <input type="text" name="last" value="スミス" /> <ボタン>送信</ボタン> </form></pre> <p><strong>ドキュメント jQuery、Ajax、html</strong></p> <pre class="brush:php;toolbar:false;">$("form#files").submit(function(){ var formData = 新しい FormData($(this)[0]); $.ajax({ URL: window.location.pathname, タイプ: 'POST'、 データ: フォームデータ、 非同期: false、 成功: 関数 (データ) { アラート(データ) }、 キャッシュ: false、 contentType: false、 プロセスデータ: false }); false を返します。 }); <form id="files" method="post" enctype="multipart/form-data"> <input name="image" type="file" /> <ボタン>送信</ボタン> </form></pre> <p>Ajax 経由でデータとファイルを 1 つの形式で送信するには、上記をどのように組み合わせればよいですか? </p> <p>私の目標は、これらすべてのフォームを Ajax 経由でまとめて送信できるようにすることですが、これは可能ですか?</p> <pre class="brush:php;toolbar:false;"><form id="datafiles" method="post" enctype="multipart/form-data"> <input type="text" name="first" value="ボブ" /> <input type="text" name="middle" value="ジェームズ" /> <input type="text" name="last" value="スミス" /> <input name="image" type="file" /> <button>提交</button> </form></pre> <p><br /></p>
P粉012875927P粉012875927526日前778

全員に返信(2)返信します

  • P粉794177659

    P粉7941776592023-08-21 09:06:07

    別のオプションは、iframe を使用し、フォームのターゲットを iframe に設定することです。

    これを試すことができます (jQuery を使用します):

    リーリー

    すべてのブラウザで動作するため、データをシリアル化したり準備したりする必要はありません。 欠点の 1 つは、進捗状況を監視できないことです。

    また、少なくとも Chrome では、リクエストは開発者ツールの「xhr」タブではなく「doc」に表示されます。

    返事
    0
  • P粉064448449

    P粉0644484492023-08-21 00:11:35

    私が抱えていた問題は、間違った jQuery 識別子を使用したことでした。

    フォームを使用できますUse ajax を使用してデータとファイルをアップロードできます。

    PHP HTML

    リーリー

    jQuery Ajax

    リーリー

    簡易バージョン

    リーリー

    返事
    0
  • キャンセル返事