Ceci est mon code HTML que je génère dynamiquement en utilisant la fonctionnalité glisser-déposer.
<form method="POST" id="contact" name="13" class="form-horizontal wpc_contact" novalidate="novalidate" enctype="multipart/form-data">
<fieldset>
<div id="legend" class="">
<legend class="">file demoe 1</legend>
<div id="alert-message" class="alert hidden"></div>
</div>
<div class="control-group">
<!-- Text input-->
<label class="control-label" for="input01">Text input</label>
<div class="controls">
<input type="text" placeholder="placeholder" class="input-xlarge" name="name">
<p class="help-block" style="display:none;">text_input</p>
</div>
<div class="control-group"> </div>
<label class="control-label">File Button</label>
<!-- File Upload -->
<div class="controls">
<input class="input-file" id="fileInput" type="file" name="file">
</div>
</div>
<div class="control-group">
<!-- Button -->
<div class="controls">
<button class="btn btn-success">Button</button>
</div>
</div>
</fieldset>
</form>
Voici mon code JavaScript:
<script>
$('.wpc_contact').submit(function(event){
var formname = $('.wpc_contact').attr('name');
var form = $('.wpc_contact').serialize();
var FormData = new FormData($(form)[1]);
$.ajax({
url : '<?php echo plugins_url(); ?>'+'/wpc-contact-form/resources/js/tinymce.php',
data : {form:form,formname:formname,ipadd:ipadd,FormData:FormData},
type : 'POST',
processData: false,
contentType: false,
success : function(data){
alert(data);
}
});
}
formData();
méthode append a un troisième paramètre facultatif pour un fichier.Réponses:
Pour une utilisation correcte des données du formulaire, vous devez effectuer 2 étapes.
Les préparatifs
Vous pouvez donner votre formulaire entier à FormData () pour le traitement
ou spécifiez des données exactes pour FormData ()
Formulaire d'envoi
La requête Ajax avec jquery ressemblera à ceci:
Après cela, il enverra une demande ajax comme vous soumettez un formulaire régulier avec
enctype="multipart/form-data"
Mise à jour: Cette demande ne peut pas fonctionner sans
type:"POST"
options car tous les fichiers doivent être envoyés via une requête POST.Remarque:
contentType: false
uniquement disponible à partir de jQuery 1.6la source
getCsrfToken
?$('form')
, il renverra l'objet jQuery. Mais nous avons besoin d'un objet js normal ici sans fonctionnalité jQuery. C'est pourquoi nous obtenons un objet régulier avec[0]
notation. Au lieu de cette construction, vous pouvez appelerdocument.getElementById()
ou appeler simultanément.Je ne peux pas ajouter de commentaire ci-dessus car je n'ai pas assez de réputation, mais la réponse ci-dessus était presque parfaite pour moi, sauf que je devais ajouter
tapez: "POST"
à l'appel .ajax. Je me grattais la tête pendant quelques minutes en essayant de comprendre ce que j'avais fait de mal, c'est tout ce dont il avait besoin et ça me fait plaisir. Voici donc l'extrait entier:
Plein crédit à la réponse ci-dessus, ce n'est qu'un petit ajustement à cela. C'est juste au cas où quelqu'un d'autre serait coincé et ne pourrait pas voir l'évidence.
la source
jQuery avec téléchargement de fichier CodeIgniter:
vous pouvez utiliser.
ou
Les deux fonctionneront.
la source
la source
la source
la source
En fait, la documentation montre que vous pouvez utiliser
XMLHttpRequest().send()
pour envoyer simplement des données multiformes au cas où jquery sucela source
Mieux vaut utiliser le javascript natif pour trouver l'élément par id comme: document.getElementById ("yourFormElementID") .
la source
Bonjour.
J'ai eu le même problème avec le téléchargement de plusieurs images. La solution était plus simple que je ne l'avais imaginé: inclure [] dans le champ du nom.
Je n'ai fait aucune modification sur FormData.
la source