[解決済み] Ajaxを使用して1つのフォームでデータとファイルの両方をアップロードする?
2022-03-21 18:25:34
質問
データとファイルを送信するフォームにjQueryとAjaxを使っていますが、1つのフォームでデータとファイルの両方を送信する方法がよくわかりません?
現在、どちらの方法もほぼ同じですが、データを配列にまとめる方法が異なり、データには
.serialize();
が、ファイルには
= new FormData($(this)[0]);
両方の方法を組み合わせて、1つのフォームでファイルとデータをAjaxでアップロードできるようにすることは可能でしょうか?
データ jQuery, Ajax, html
$("form#data").submit(function(){
var formData = $(this).serialize();
$.ajax({
url: window.location.pathname,
type: 'POST',
data: formData,
async: false,
success: function (data) {
alert(data)
},
cache: false,
contentType: false,
processData: false
});
return false;
});
<form id="data" method="post">
<input type="text" name="first" value="Bob" />
<input type="text" name="middle" value="James" />
<input type="text" name="last" value="Smith" />
<button>Submit</button>
</form>
ファイル jQuery、Ajax、html
$("form#files").submit(function(){
var formData = new FormData($(this)[0]);
$.ajax({
url: window.location.pathname,
type: 'POST',
data: formData,
async: false,
success: function (data) {
alert(data)
},
cache: false,
contentType: false,
processData: false
});
return false;
});
<form id="files" method="post" enctype="multipart/form-data">
<input name="image" type="file" />
<button>Submit</button>
</form>
上記を組み合わせて、Ajaxでデータとファイルを1つのフォームで送れるようにするにはどうしたらいいですか?
私の目的は、このフォームをすべてAjaxで1つの投稿で送信できるようにすることですが、可能でしょうか?
<form id="datafiles" method="post" enctype="multipart/form-data">
<input type="text" name="first" value="Bob" />
<input type="text" name="middle" value="James" />
<input type="text" name="last" value="Smith" />
<input name="image" type="file" />
<button>Submit</button>
</form>
解決方法は?
私が抱えていた問題は、間違ったjQueryの識別子を使用していたことです。
あなた データおよびファイルのアップロードが可能 一つのフォームで ajaxを使用した .
PHP + HTML
<?php
print_r($_POST);
print_r($_FILES);
?>
<form id="data" method="post" enctype="multipart/form-data">
<input type="text" name="first" value="Bob" />
<input type="text" name="middle" value="James" />
<input type="text" name="last" value="Smith" />
<input name="image" type="file" />
<button>Submit</button>
</form>
jQuery + Ajax
$("form#data").submit(function(e) {
e.preventDefault();
var formData = new FormData(this);
$.ajax({
url: window.location.pathname,
type: 'POST',
data: formData,
success: function (data) {
alert(data)
},
cache: false,
contentType: false,
processData: false
});
});
ショートバージョン
$("form#data").submit(function(e) {
e.preventDefault();
var formData = new FormData(this);
$.post($(this).attr("action"), formData, function(data) {
alert(data);
});
});
関連
-
JavaScriptの関数この指摘の問題を説明
-
vue for 登録ページ効果 vue for sms 認証コードログイン
-
[解決済み】awaitは非同期関数でのみ有効です。
-
[解決済み] let "と "var "の使い分けは?
-
[解決済み] jQueryを使ったAjaxリクエストの中断
-
[解決済み] jQueryでフォームデータをJavaScriptオブジェクトに変換する
-
[解決済み] jQuery AJAX送信フォーム
-
[解決済み] [Solved] Jquery - $.post()でcontentType=application/jsonを使用するようにするには?
-
[解決済み】fetch apiでフォームデータを投稿するには?
-
[解決済み] FormDataに配列を追加し、AJAXで送信する。
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
fetch ネットワークリクエストラッパーの説明例
-
元のイベントが実行されなかった後に要素を追加するためのjQueryソリューション
-
jQueryのコピーオブジェクトの説明
-
vueにおけるv-forループオブジェクトのプロパティ
-
Vueのクラススタイルの使い方の詳細
-
Vueでルートネスティングを実装する例
-
[解決済み】Node Version Manager のインストール - nvm コマンドが見つかりません。
-
[解決済み】TypeErrorの解決方法。未定義またはヌルをオブジェクトに変換できない
-
[解決済み】ERROR エラーです。スイッチのname属性が指定されていないフォームコントロールの値アクセッサがない
-
[解決済み】 Uncaught TypeError : undefined のプロパティ 'replace' を読み取れない In Grid