Sto usando jQuery e Ajax per i miei moduli per inviare dati e file ma non sono sicuro di come inviare sia dati che file in un unico modulo?
Attualmente faccio quasi lo stesso con entrambi i metodi, ma il modo in cui i dati vengono raccolti in un array è diverso, i dati usano .serialize();
ma i file usano= new FormData($(this)[0]);
È possibile combinare entrambi i metodi per poter caricare file e dati in un unico modulo tramite Ajax?
Dati jQuery, Ajax e 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 e 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>
Come posso combinare quanto sopra in modo da poter inviare dati e file in un unico modulo tramite Ajax?
Il mio obiettivo è essere in grado di inviare tutto questo modulo in un solo post con Ajax, è possibile?
<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
approccio dovrebbe funzionare bene con i moduli che contengono ciò che vuoi, non solo i campi di caricamento dei file; tuttavia non è ampiamente supportato.