Używam jQuery i Ajax do formularzy do przesyłania danych i plików, ale nie jestem pewien, jak wysłać zarówno dane, jak i pliki w jednym formularzu?
Obecnie robię prawie to samo z obiema metodami, ale sposób, w jaki dane są gromadzone w tablicy, jest inny, dane używają, .serialize();
ale pliki używają= new FormData($(this)[0]);
Czy można połączyć obie metody, aby móc przesyłać pliki i dane w jednej formie za pośrednictwem Ajax?
Dane jQuery, Ajax i 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>
Pliki jQuery, Ajax i 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>
Jak połączyć powyższe, aby móc wysyłać dane i pliki w jednej formie za pośrednictwem Ajax?
Moim celem jest, aby móc wysłać cały ten formularz w jednym poście z Ajax, czy to możliwe?
<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
Podejście powinno działać dobrze z form, które zawierają co chcesz, nie tylko pola Prześlij plik; nie jest to jednak powszechnie obsługiwane.