IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

AJAX Discussion :

Envoie de formulaire type file en Ajax


Sujet :

AJAX

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Chargé d'études informatiques
    Inscrit en
    Avril 2019
    Messages
    55
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 26
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Chargé d'études informatiques
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2019
    Messages : 55
    Par défaut Envoie de formulaire type file en Ajax
    Bonjour,
    je travaille actuellement sur l'envoie de formulaire en ajax, cela ce passe très bien quand je veux envoyer du texte mais quand je veux envoyer une image via un input de type file, mon fichier de traitement n'arrive pas à récuperer le $_FILES je ne sais donc pas dutout comment faire voici mon code de formulaire :
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    <form class="ui form" id="formpubli" method="POST" enctype="multipart/form-data">
    				    <div class="field">
    						<textarea style="resize : none;" name="txt" required value=""></textarea>
    					</div>
    					<div class="two fields">
    						<input type="file" name="post"> </input>
    						<button type="submit" class="ui primary button" style="float: right;">
    							Publier
    						</button>
    					</div>
    		    	</form>
    Et l'ajax :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    $(function(){
    	$("#formpubli").submit(function(){
    		txt = $(this).find("textarea[name=txt]").val();
    		post = $(this).find("input[name=post]").val();
    		$.post("traitement/traitement_publication.php?post",{txt: txt, post: post},function(data){
    			if(data == "post"){
    				$('#post').load('script/post.php');	
    				$('#actuReq').load('script/actuReq.php');
    				$('textarea').val('');
    				alert(data);
    			}
    		});
    		return false;
    	});
    });
    Merci d'avance pour votre aide !

  2. #2
    Expert confirmé
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 666
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 666
    Par défaut
    le contenu du champ file doit être utilisé en passant par un objet "FormData". et ensuite il faut définir "processData" et "contentType" lors de la requête.

    ça donne quelque chose comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
     
    	var formData = new FormData();
     
    	$.each($(this).find("input[name=post]")[0].files, function (i, file) { // une boucle si le champ "file" permet de sélectionner plusieurs fichiers
    		formData.append("f_" + i, file);
    	});
     
    	formData.append("texte", $(this).find("textarea[name=txt]").val());
     
     
    	$.ajax({
    		url : "http://url",
    		type : "POST",
    		data : formData,
    		processData : false, 
    		contentType : false, 
    	})
    	.done(function (reponse) {
     
     
     
    	});

  3. #3
    Membre confirmé
    Homme Profil pro
    Chargé d'études informatiques
    Inscrit en
    Avril 2019
    Messages
    55
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 26
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Chargé d'études informatiques
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2019
    Messages : 55
    Par défaut
    Merci de votre réponse,
    J'ai implémenté votre code dans le mien mais je ne récupere rien dans mon fichier de traitement.. Voilà ce que j'ai fais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    $(function(){
    	$("#formpubli").submit(function(){
     
    		var formData = new FormData();
     
    		$.each($(this).find("input[name=post]")[0].files, function (i, file) { // une boucle si le champ "file" permet de sélectionner plusieurs fichiers
    			formData.append("f_" + i, file);
    		});
     
    		formData.append("texte", $(this).find("textarea[name=txt]").val());
     
     
    		$.ajax({
    			url : "traitement/traitement_publication.php?post",
    			type : "POST",
    			data : formData,
    			processData : false, 
    			contentType : false, 
    		})
    		.done(function (reponse) {
     
    			$('#post').load('script/post.php');	
    			$('#actuReq').load('script/actuReq.php');
    			$('textarea').val('');
     
    		});
    	});
    });

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 1
    Dernier message: 28/11/2012, 16h40
  2. Réponses: 2
    Dernier message: 21/05/2010, 11h54
  3. [MySQL] Gestion de plusieurs formulaires type=file
    Par Gauldo dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 09/12/2008, 17h33
  4. INSERT INTO et le formulaire type="file"
    Par abdellah63 dans le forum Langage
    Réponses: 9
    Dernier message: 15/06/2008, 17h47
  5. [ajax] XMLHttpRequest et formulaire(<input type='file'>)
    Par Are-no dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 23/08/2006, 20h22

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo