フォームにjQueryとAjaxを使用してデータとファイルを送信していますが、データとファイルの両方を1つのフォームで送信する方法がわかりません。
私は現在両方の方法でほとんど同じことをしていますが、データが配列に収集される方法は異なり、データは使用します.serialize();
がファイルは使用します= new FormData($(this)[0]);
Ajaxを介してファイルとデータを1つの形式でアップロードできるようにするために、両方の方法を組み合わせることが可能ですか?
データ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>
FormData
アプローチは、ファイルアップロードフィールドだけでなく、必要なものをすべて含むフォームでうまく機能するはずです。それは広くサポートされていません。