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 :

Afficher un gif de chargement après le submit d'un formulaire [AJAX]


Sujet :

jQuery

  1. #1
    Membre actif
    Avatar de Freedolphin
    Homme Profil pro
    Webmaster
    Inscrit en
    Février 2006
    Messages
    291
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Webmaster
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Février 2006
    Messages : 291
    Points : 225
    Points
    225
    Par défaut Afficher un gif de chargement après le submit d'un formulaire
    Bonjour,

    J'utilise un loader en gif qui fonctionne très bien dans le cas d'un (re)chargement de page.
    Mais j'aimerais obtenir le même résultat après le lancement d'un formulaire et requête php/mysql un peu longue.
    J'ai lu des dizaines de tutos et autres qui préconisent l'utilisation d'ajax, mais je ne sais pas comment adapter mon code.
    Quelqu'un peut-il me donner quelques pistes ?

    Voici le code original :
    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
    <div id="loader"></div>
     
    <SCRIPT LANGUAGE="JavaScript">
    var nava = (document.layers);
    var dom = (document.getElementById);
    var iex = (document.all);
    if (nava) { cach = document.loader }
    else if (dom) { cach = document.getElementById("loader").style }
    else if (iex) { cach = loader.style }
    largeur = screen.width;
    cach.left = Math.round((largeur/2)-200);
    cach.visibility = "visible";
     
    function loaderOff()
    	{
    	cach.visibility = "hidden";
    	}
    window.onload = loaderOff
    </SCRIPT>
    Merci d'avance !
    Le mieux n'est pas forcément l'ennemi du bien.

  2. #2
    Modérateur

    Avatar de NoSmoking
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    16 959
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 16 959
    Points : 44 122
    Points
    44 122
    Par défaut
    Bonjour,
    je ne sais où tu as trouvé ton script mais il date quand même beaucoup (var nava = (document.layers) en dit long).

    et autres qui préconisent l'utilisation d'ajax, mais je ne sais pas comment adapter mon code.
    comme on n'a pas ton code on ne pourra pas te dire précisément, pour le principe, avant appel de ta fonction Ajax tu affiches ton loader et au retour de la requête tu le masques.

  3. #3
    Membre actif
    Avatar de Freedolphin
    Homme Profil pro
    Webmaster
    Inscrit en
    Février 2006
    Messages
    291
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Webmaster
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Février 2006
    Messages : 291
    Points : 225
    Points
    225
    Par défaut
    Citation Envoyé par NoSmoking Voir le message
    je ne sais où tu as trouvé ton script mais il date quand même beaucoup
    Je l'avais trouvé sur un tuto, je suis très limité en JS.

    Citation Envoyé par NoSmoking Voir le message
    comme on n'a pas ton code on ne pourra pas te dire précisément
    Le code était affiché plus haut.

    Citation Envoyé par NoSmoking Voir le message
    avant appel de ta fonction Ajax tu affiches ton loader et au retour de la requête tu le masques.
    Le loader est présent sous la forme d'une DIV, stylée en CSS. Je peux donc ajouter un display:none et modifier cette class par la fonction. Mais je ne sais pas du tout comment écrire celle-ci. As-tu un début de commencement ?
    Le mieux n'est pas forcément l'ennemi du bien.

  4. #4
    Modérateur

    Avatar de NoSmoking
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    16 959
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 16 959
    Points : 44 122
    Points
    44 122
    Par défaut
    Le code était affiché plus haut.
    Je ne vois pas de code mais juste un morceau de page qui devrait affiché une image de loading puis disparaître en fin de chargement de la page.

    En fait tu n'as aucune garantie que l'image soit chargée et affichée avant la fin de l'affichage de ta page.

    Mais j'aimerais obtenir le même résultat après le lancement d'un formulaire et requête php/mysql un peu longue.
    Là plus rien ne t'appartient et le navigateur peut tout à fait figer l'affichage, d'autant que tu n'as aucune garantie que les différents navigateurs ne réagissent de la même façon.

  5. #5
    Membre actif
    Avatar de Freedolphin
    Homme Profil pro
    Webmaster
    Inscrit en
    Février 2006
    Messages
    291
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Webmaster
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Février 2006
    Messages : 291
    Points : 225
    Points
    225
    Par défaut
    Ce n'est pas un "morceau de page" mais l'intégralité du code JavaScript utilisé, qui encore une fois, fonctionne très bien sur un chargement de page de type "entrée" ou F5.
    L'idée est de lancer un tel script pendant une requete mysql lancée par un form présent sur la page.
    Pour ce qui est du navigateur, pas de problème de ce côté puisque c'est pour un back-office (donc non public).

    Je suis arrivé à un résultat très satisfaisant avec ces quelques lignes (et en utilisant Jquery) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    <script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
     
    <div id="ajax-loading"></div>
     
    <SCRIPT LANGUAGE="JavaScript">
    jQuery(function($){
        $('#ajax-loading').hide(); // On masque le gif au chargement de la page
     
        $('#ajax-load').click(function(e){
            // Affichage du gif de chargement
            $('#ajax-loading').show();
        });
    });
    </SCRIPT>
    Puis sur mon formulaire, j'ai ajouté un ID au submit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <input type='submit' value='ok' id='ajax-load'>
    Je précise que la DIV contient le GIF en background.

    Bon, le top, ce serait de me passer de ce bouton et de lancer le formulaire avec le select et un "onchange=submit()", mais ça ne veut pas. C'est déjà très bien comme ça, et ça servira peut-être à d'autres.
    Le mieux n'est pas forcément l'ennemi du bien.

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 30/05/2016, 14h05
  2. [2.x] Afficher un modal apres un submit
    Par MehrezLabidi dans le forum Symfony
    Réponses: 6
    Dernier message: 05/12/2015, 10h01
  3. Réponses: 7
    Dernier message: 31/08/2010, 10h53
  4. Afficher un gif loading en attendant le chargement d'une image
    Par gandoulfe dans le forum Général JavaScript
    Réponses: 8
    Dernier message: 10/03/2008, 17h59
  5. Réponses: 4
    Dernier message: 22/05/2007, 10h52

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