Я использую 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
Подход должен работать нормально с формами , которые содержат все , что вы хотите, а не только поля закачивать файл; это не широко поддерживается, хотя.