Comment utiliser Ajax pour télécharger des données et des fichiers en même temps ?
P粉012875927
2023-08-20 14:33:32
<p>J'utilise jQuery et Ajax pour soumettre des données et des fichiers, mais je ne sais pas comment envoyer à la fois des données et des fichiers sous un seul formulaire ? </p>
<p>J'utilise actuellement les deux méthodes presque de la même manière, mais la manière de collecter les données dans un tableau est différente, les données utilisent <code>.serialize();</code> ;= new FormData($(this)[0]);</code></p>
<p>Est-il possible de combiner ces deux méthodes pour télécharger des fichiers et des données sous une seule forme via Ajax ? </p>
<p><strong>Données jQuery, Ajax et html</strong></p>
<pre class="brush:php;toolbar:false;">$("form#data").submit(function(){
var formData = $(this).serialize();
$.ajax({
URL : window.location.pathname,
tapez : 'POST',
données : formData,
asynchrone : faux,
succès : fonction (données) {
alerte (données)
},
cache : faux,
contentType : faux,
ProcessData : faux
});
renvoie faux ;
});
<id du formulaire="données" méthode="post">
<input type="text" name="first" value="Bob" />
<input type="text" name="middle" value="James" />
<input type="text" name="last" value="Smith" />
<bouton>Envoyer</bouton>
</form></pre>
<p><strong>Documentation jQuery, Ajax et html</strong></p>
<pre class="brush:php;toolbar:false;">$("form#files").submit(function(){
var formData = new FormData($(this)[0]);
$.ajax({
URL : window.location.pathname,
tapez : 'POST',
données : formData,
asynchrone : faux,
succès : fonction (données) {
alerte (données)
},
cache : faux,
contentType : faux,
ProcessData : faux
});
renvoie faux ;
});
<form id="files" method="post" enctype="multipart/form-data">
<nom d'entrée="image" type="fichier" />
<bouton>Envoyer</bouton>
</form></pre>
<p>Comment puis-je combiner ce qui précède afin de pouvoir envoyer des données et des fichiers sous un seul formulaire via Ajax ? </p>
<p>Mon objectif est de pouvoir envoyer tous ces formulaires ensemble via Ajax, est-ce possible ?</p>
<pre class="brush:php;toolbar:false;"><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" />
<nom d'entrée="image" type="fichier" />
<bouton>提交</bouton>
</form></pre>
<p><br /></p>
Une autre option consiste à utiliser une iframe et à y définir la cible du formulaire.
Vous pouvez essayer ceci (il utilise jQuery) :
Cela fonctionne dans tous les navigateurs et vous n'avez pas besoin de sérialiser ou de préparer des données. Un inconvénient est que vous ne pouvez pas suivre les progrès.
De plus, au moins pour Chrome, la requête n'apparaît pas sous l'onglet "xhr" dans les outils de développement, mais sous "doc".
Le problème que j'ai eu était d'utiliser le mauvais identifiant jQuery.
Vous pouvez utiliser un formulaire utilisant ajax pour télécharger des données et des fichiers.
PHP + HTML
jQuery + Ajax
Version simplifiée