J'utilise jQuery et Ajax pour mes formulaires pour soumettre des données et des fichiers mais je ne sais pas comment envoyer à la fois des données et des fichiers dans un seul formulaire?
Actuellement, je fais presque la même chose avec les deux méthodes, mais la façon dont les données sont collectées dans un tableau est différente, les données utilisent .serialize();
mais les fichiers utilisent= new FormData($(this)[0]);
Est-il possible de combiner les deux méthodes pour pouvoir télécharger des fichiers et des données sous une forme via Ajax?
Données jQuery, Ajax et 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>
Fichiers jQuery, Ajax et 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>
Comment puis-je combiner ce qui précède afin que je puisse envoyer des données et des fichiers sous une forme via Ajax?
Mon objectif est de pouvoir envoyer tout ce formulaire en un seul message avec Ajax, est-ce possible?
<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
approche devrait bien fonctionner avec des formulaires qui contiennent tout ce que vous voulez, pas seulement les champs de téléchargement de fichiers; il n'est cependant pas largement pris en charge.