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

jQuery Discussion :

envoi de fichier par iframe


Sujet :

jQuery

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre chevronné
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    1 855
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 1 855
    Par défaut envoi de fichier par iframe
    Bonjour,

    j'envoi un fichier de manière asynchrone via une iframe :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    			<form id="uploadform" action="upload.cgi" target="iframecfg" method="post" enctype="multipart/form-data">
    				<fieldset>
    					<legend>fichier a uploader</legend>
    					<p>
    						<input type="file" name="cfgFile" id="cfgFile" />
    						<input type="submit" value="Envoyer" />
    						<span id="postStatus2"></span>
    					</p>
    				</fieldset>
    			</form>
    Avant l'envoi du fichier, j'aimerais qu'une dialogBox demandant la confirmation que l'on veut bien envoyer le fichier. Donc j'ai fait ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
        // lorsque ma page web s'ouvre
     
        // initialisation formulaire envoie de fichier 
    	$("#uploadform").submit(function(){
    		return cfgCheckSubmit();
    	});
    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
     
    var	repIni;
    function cfgCheckSubmit(){
     
    	repIni = false;
     
     
     	// fonction qui affiche la dialogBox ( => $("#diaBox").show() )
    	showConfirmBox(
    		"Question", 
    		"Voulez-vous vraiment continuer ?",
    		0,
    		cfgCheckSubmit2 // fonction appelée si reponse oui
    	);
    	while(????); // on reste dans la boucle tant que l'utilisateur n'a pas validé son choix
     
    	return rep;
    	// on envoie le formulaire avec la methode traditionnelle mais le fichier est retourné vers la iframe
    	// => dans le fichier de retour, on met le code qui permet de lancer la fonction cfgRequest
    }
     
    // appel de cette focntion si la dialogBox a été confirmée
    function cfgCheckSubmit2(){
    	repIni = true;
        $("#diaBox").hide()
    }
    Est-ce bien la bonne methode ?
    Que dois-je mettre comme condition dans mon while(????); ?

  2. #2
    Rédacteur
    Avatar de marcha
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2003
    Messages
    1 571
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 571
    Par défaut
    Salut,

    je ne connais pas showConfirmBox, mais soit cette fonction
    attends comme paramètre une fonction callback qui est appelée
    quand on click ok ou cancel, soit tu dois toi-même assigner une
    fonction au click des boutons ok ou cancel.

    Dans cette logique, il faut virer ton bouton submit et mettre un
    bouton classique à la place qui appele ta fonction de confirmation.

    Dans l'évènement lié au bouton ok, tu écrit:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $('#uploadform').submit(); // donne l'ordre de poster le formulaire
    Il faut virer ta boucle while, car une attente active dans un language non
    multithread va figer ton interface.

  3. #3
    Membre chevronné
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    1 855
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 1 855
    Par défaut
    showConfirmBox() est une fonction que j'ai créé moi même : il affiche mon div, et affecte la fonction passée en paramètre au bouton OK (tu as bien compris son fonctionnement)
    Mais si je mets un bouton classique, il me semble que je ne pourrais pas envoyer mon fichier, non ? comment dois-je faire pour envoyer mon fichier ?
    => j'ai essayé ça mais ça ne fonctionne pas : $("#myForm").triggerHandler("submit");


    y a quelque temps, j'avais demandé si on était obligé d'utiliser une iframe pour faire des envois de fichiers asynchrones : on m'avait répondu que oui => est-ce toujours le cas aujourd'hui (y a t-il maintenant des méthode pour être compatible W3C ?) ?

  4. #4
    Rédacteur
    Avatar de marcha
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2003
    Messages
    1 571
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 571
    Par défaut
    Citation Envoyé par boboss123 Voir le message
    => j'ai essayé ça mais ça ne fonctionne pas : $("#myForm").triggerHandler("submit");
    Salut,

    c'est trigger('submit') qu'il faut utiliser, pas triggerHandler('submit'). Car
    triggerHandler ne produit pas l'évènement 'naturel' de l'élément.

    Documentation ici (l'exemple du form.submit est même utilisé)

    Citation Envoyé par boboss123 Voir le message
    y a quelque temps, j'avais demandé si on était obligé d'utiliser une iframe pour faire des envois de fichiers asynchrones : on m'avait répondu que oui => est-ce toujours le cas aujourd'hui (y a t-il maintenant des méthode pour être compatible W3C ?) ?
    C'est toujours la méthode la plus compatible aujourd'hui. Les alternatives
    sont flash, java, activex

    Dans un future proche, l'objet FileReader permettra de lire un fichier local.
    Il sera donc possible de l'envoyer par une requête Ajax sans utiliser d'iframe.

    ça fonctionne déjà sur FireFox 3.6

  5. #5
    Membre chevronné
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    1 855
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 1 855
    Par défaut
    ok merci,

    vivement qu'on puisse utiliser FileReader (va falloir attendre au moins 5ans pour pouvoir l'utiliser)

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

Discussions similaires

  1. Envoi de fichier par socket
    Par thebloodyman dans le forum Entrée/Sortie
    Réponses: 2
    Dernier message: 30/08/2007, 17h07
  2. Envoi de fichier par socket
    Par dr_octopus74 dans le forum Réseau
    Réponses: 42
    Dernier message: 19/01/2007, 17h59
  3. [HTTP] Envoi de fichiers par http post
    Par java_girl dans le forum Entrée/Sortie
    Réponses: 6
    Dernier message: 28/08/2006, 16h44
  4. [HTTP] Envoi de fichiers par http
    Par Delendial dans le forum Entrée/Sortie
    Réponses: 7
    Dernier message: 03/09/2004, 09h37
  5. [Débutant] Envoi de fichier par socket
    Par zapho dans le forum Entrée/Sortie
    Réponses: 13
    Dernier message: 26/05/2004, 18h58

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