Я використовую jQuery і Ajax для моїх форм для подання даних і файлів, але я не впевнений, як надсилати і дані, і файли в одній формі?
В даний час я роблю майже те саме з обома методами, але спосіб збирання даних у масив відрізняється, дані використовуються, .serialize();
але файли використовують= new FormData($(this)[0]);
Чи можливо комбінувати обидва методи, щоб мати можливість завантажувати файли та дані в одній формі через 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?
Моя мета - мати можливість відправити всю цю форму в один допис за допомогою Ajax, чи це можливо?
<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
Підхід повинен працювати нормально з формами , які містять всі , що ви хочете, а не тільки поля закачувати файл; він не підтримується широко.