Saya menggunakan jQuery dan Ajax untuk formulir saya untuk mengirim data dan file tetapi saya tidak yakin bagaimana mengirim data dan file dalam satu formulir?
Saat ini saya melakukan hampir sama dengan kedua metode tetapi cara di mana data dikumpulkan ke dalam array berbeda, data menggunakan .serialize();
tetapi file menggunakan= new FormData($(this)[0]);
Apakah mungkin untuk menggabungkan kedua metode agar dapat mengunggah file dan data dalam satu bentuk melalui Ajax?
Data jQuery, Ajax dan 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>
File jQuery, Ajax dan 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>
Bagaimana saya bisa menggabungkan di atas sehingga saya dapat mengirim data dan file dalam satu bentuk melalui Ajax?
Tujuan saya adalah untuk dapat mengirim semua formulir ini dalam satu posting dengan Ajax, mungkinkah?
<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
FormData
Pendekatan harus bekerja dengan baik dengan bentuk-bentuk yang mengandung apa pun yang Anda inginkan, bukan hanya bidang upload file; itu tidak didukung secara luas sekalipun.