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

JavaScript Discussion :

Ajax/js InnerHTML affichage image


Sujet :

JavaScript

  1. #1
    Membre r�gulier
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    10
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 10
    Par d�faut Ajax/js InnerHTML affichage image
    hello voici un des deux probl�mes que je n'arrive pas � r�soudre.
    pas mal cherch� avant de vous solliciter mais mes comp�tences en ce qui concerne le javascript �tant limit�es, je n'ai pas reussi � solutionner mes probl�mes dont l'un suit :



    ce script fait partie d un script d upload de fichier.

    on a donc un input avec un bouton parcourir, une fois le fichier s�lectionn�, l'input et bouton parcourir disparaissent pour laisser place au message 'Envoi en cours"

    bref cette �tape correspond � la partie ci dessous en vert.

    je souhaiterais pouvoir ajouter une image (ajax_loader.gif // barre de progression en gif) a cot� du texte 'Envoi en cours'.
    Mais impossible d'int�grer cela, cela fait bugguer le script a chaque fois :s

    si quelqu'un � une id�e/solution, je suis plus que preneur ...

    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
    <?php
     
    // Le futur contenu
    $content = array();
     
    // Si la variable d'action est transmise et si le type coincide, alors on cr�e un nouveau input
    if( isset($_GET['action']) && $_GET['action'] == 'add_file_input' )
    {
     $mTime = time();
     // On cr�e la zone qui va contenir le formulaire du fichier � envoyer
     $content[] = '<div style="font-family:verdana;font-size:0.8em;border:1px;padding:4px;margin:0px;" id="file_status_'.$mTime.'">';
     // Puis le formulaire en lui m�me
     $content[] = '<form name="file_'.$mTime.'" method="post" action="alt_index_upload.php" target="alt_index_upload" enctype="multipart/form-data">';
     // On cr�e un champ cach� qui contient le nom de la zone dans laquelle afficher les informations sur l'�tat du transfert
     $content[] = '<input type="hidden" name="htmlElement" value="file_status_'.$mTime.'"/>';
     // Lorsqu'un fichier est selectionn� dans la liste, il est envoy� au serveur automatiquement en arri�re plane et l'utilisateur en est inform�
    $content[] = '<input type="file" name="fichier" onChange="document.file_'.$mTime.'.submit();document.getElementById(\'file_status_'.$mTime.'\').innerHTML=\'Envoi en cours\';">';
     $content[] = '</form>';
     $content[] = '</div>';
    }
     
    echo utf8_encode( implode(chr(10),$content) );
     
     
    ?>

  2. #2
    Membre Expert
    Avatar de gwyohm
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Octobre 2007
    Messages
    925
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 45
    Localisation : France, Paris (�le de France)

    Informations professionnelles :
    Activit� : D�veloppeur informatique

    Informations forums :
    Inscription : Octobre 2007
    Messages : 925
    Par d�faut
    Bonjour et bienvenue sur le forum,

    Je ne comprends pas trop o� se situe ton probl�me... le code que tu donnes est du PHP, et d'apr�s ton message, c'est dans le javascript que tu as des soucis. Mais on en a pas une ligne !

    Sache quand m�me qu'il n'est pas possible de soumettre des champs file en Ajax (il faut passer par une iframe cach�e) et que de toutes facons, AJAX ne te permettrai pas d'afficher une barre de progression pour informer du pourcentage de traitement...

  3. #3
    Membre r�gulier
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    10
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 10
    Par d�faut
    hello gwyohm, merci pour ton aide a nouveau.

    oui je sais qu'on ne peut afficher de barre de progression, la du coup je souhaiterais qu'apparaisse avant le "envoi en cours" une image genre celle ci :


    �a donnera un effet de chargement plutot.

    pour la soumission du champ file, effectivement cela tourne dans une iframe. je n ai indiqu� ici qu une partie du script.

    pour la partie en javascript dans le script php c'est la suivante (que j avais color� en vert)

    on a l'input nomm� fichier qui une fois qu on a parcouru et s�lectionn� le fichier (action onchange), envoie le fichier sur le serveur et remplace dans la page le champ input+bouton submit par le texte "envoi en cours"


    $content[] = '<input type="file" name="fichier" onChange="document.file_'.$mTime.'.submit();document.getElementById(\'file_status_'.$mTime.'\').innerHTML=\'Envoi en cours\';">';

  4. #4
    Membre Expert
    Avatar de gwyohm
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Octobre 2007
    Messages
    925
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 45
    Localisation : France, Paris (�le de France)

    Informations professionnelles :
    Activit� : D�veloppeur informatique

    Informations forums :
    Inscription : Octobre 2007
    Messages : 925
    Par d�faut
    Plutot que le script php, il serait plus utile de voir le HTML g�n�r�.

  5. #5
    Membre r�gulier
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    10
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 10
    Par d�faut
    voici le html g�n�r� :

    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
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    <html>
    <head>
    	<script language="javascript">
    	var formInputs = new Array();
    	var xhrObject = new Array();
    
    	function ajax_call_multi( fichier, id, sync, addContent, xhrCount )
    	{
    		// Initilisation de xhr_count si n�cessaire
    		if( !xhrCount )
    			xhrCount = 0;
    		// Initialisation de la variable d'�tat d'ajout de contenu
    		if( !addContent )
    			addContent = 0;
    
                            // Si le navigateur est Firefox, on cr�e l'objet XMLHttpRequest propre � firefox (fonctionne aussi avec Opera/Netscape)
    		if( window.XMLHttpRequest )
    			xhrObject[xhrCount] = new XMLHttpRequest();
    		else if( window.ActiveXObject ) // Si c'est Internet Explorer, on cr�e un nouvel objet ActiveX de type XMLHTTP
    			xhrObject[xhrCount] = new ActiveXObject("Microsoft.XMLHTTP");
    		else // Et si aucune des deux m�thodes n'a fonctionn�, on oublie AJAX !
    		{
    			alert( "Votre navigateur ne supporte pas le WEB2.0\nMerci d\'en utiliser un plus r�cent" );
    			return( false );
    		}
    
                            // Est-ce qu'on utilise le mode synchr�ne ou pas... ?!
    		if( sync == 1 ) // Mode synchr�ne
    		{
    			// L'objet est cr��, on peut donc ouvrir la connexion. Le premier param�tre d�finit le mode d'envois des variables, GET ou POST
    			// Il est plus facil d'utiliser la m�thode GET, j'expliquerai les raisons dans un avenir proche. Le deuxi�me param�tre correspond au script
    			// sur le serveur qui fera le traitement et enfin, true/false pour asynchr�ne/synchrone. Ici j'ai choisi ...? Synchr�ne
                            xhrObject[xhrCount].open( "GET", fichier, false );
                            // On envois la requ�te, ici sans contenu (null), mais il serait possible d'en envoyer.
                            xhrObject[xhrCount].send( null );
                            // Quand le serveur a termin� d'ex�cuter le script (�tat 4), on affiche le contenu retourn� dans notre balise div
                            if( xhrObject[xhrCount].readyState == 4 )
                                    window.document.getElementById( id ).innerHTML = xhrObject[xhrCount].responseText;
    			else
    				return( false );
    		}
    		else // Mode asynchr�ne, on utilise cette fois une seconde fonction qui va g�rer l'�tat
    		{
    			xhrObject[xhrCount].onreadystatechange = function() { ajax_display_multi(xhrObject[xhrCount],id,xhrCount,addContent); };
                            // La diff�rence est qu'il faut cette fois mettre le troisi�me param�tre � true
    			xhrObject[xhrCount].open( "GET", fichier, true );
                            xhrObject[xhrCount].send( null );
      		}
    	}
    	function ajax_display_multi( xhr, id, count, addContent )
    	{
                    if( xhr.readyState == 4 )
    		{
    			// Est-ce que l'on ajoute le nouveau contenu dans notre zone ou pas...
                            if( addContent == 1 )
    				window.document.getElementById( id ).innerHTML += xhr.responseText;
    			else
    				window.document.getElementById( id ).innerHTML = xhr.responseText;
        		}
    	}
    	</script>
    </head>
    <body style="background-color:#ffffff">
    
    <div style="font-family:verdana;font-size:0.8em;margin:0px auto;padding:8px;width:400px;border:0px solid black;background-color:#ffffff;">
    Transfert de fichiers (les extensions autoris�es sont <i>jpg</i>,<i>gif</i>,<i>png</i> et <i>pdf</i>)
    
    
    <p>
    <div style="font-family:verdana;font-size:0.8em;border:1px;padding:4px;margin:0px;" id="file_status_1267375385">
    <form name="file_1267375385" method="post" action="alt_index_upload.php" target="alt_index_upload" enctype="multipart/form-data">
    <input type="hidden" name="htmlElement" value="file_status_1267375385"/>
    <input type="file" name="fichier" onChange="document.file_1267375385.submit();document.getElementById('file_status_1267375385').innerHTML='Envoie en cours';">
    </form>
    </div>
    <div id="inpList" style="margin:0px;padding:8px 0 4px 0;"></div><p><p>
    <a href="javascript:void%200" style="font-family:verdana;font-size:0.8em;font-weight:bold;text-decoration:none;color:#143765;" onClick="ajax_call_multi('alt_index_ajax.php?action=add_file_input','inpList',0,1);" alt=""><img src="ajouter.png" border="0">Ajouter d'autres fichiers</a>
    </div>
    
    </body>
    </html>

  6. #6
    Membre r�gulier
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    10
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 10
    Par d�faut
    n y aurait til pas une solution en utilisant �a :

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    var img = document.createElement('img');
    img.setAttribute('src', url)
    img.setAttribute('alt', 'blabla');

    et apr�s on apelle la valeur 'img'

Discussions similaires

  1. [MFC] affichage image cam�ra dans un projet dialog
    Par Vestaproman dans le forum MFC
    R�ponses: 3
    Dernier message: 07/02/2005, 13h27
  2. [Image] Affichage image en 12 bits
    Par Plawi dans le forum 2D
    R�ponses: 9
    Dernier message: 18/11/2004, 09h34
  3. Affichage Image
    Par greg_one dans le forum Composants
    R�ponses: 5
    Dernier message: 22/06/2004, 16h10
  4. Probl�me de m�moire Affichage images
    Par Repti dans le forum C++Builder
    R�ponses: 6
    Dernier message: 29/03/2004, 20h06
  5. [Kylix] pb Affichage image .jpg
    Par sioux dans le forum EDI
    R�ponses: 4
    Dernier message: 18/01/2004, 19h20

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