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] Notification de chargement sans framework


Sujet :

JavaScript

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    96
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Octobre 2007
    Messages : 96
    Points : 63
    Points
    63
    Par défaut [AJAX] Notification de chargement sans framework
    Bonjour,

    J'utilise de nombreux appels Ajax sur un site que je suis en train de développer, et j'aimerais donc logiquement faire apparaitre une notification de chargement.
    Malheureusement je n'utilise pas de framework spécifique, j'aimerais donc obtenir en gros le même résultat qu'avec prototype.js sur cette page :
    http://ajaxian.com/archives/ajax-act...ators-examples

    J'ai essayé de jouer avec
    if(xhr.readyState == 1)
    // J'affiche mon image de chargement
    if(xhr.readyState == 4 && xhr.status == 200)
    // Je cache mon image de chargement

    Mais cette technique est boiteuse et de nombreux appels sont fait inutilement.

  2. #2
    Membre émérite Avatar de franculo_caoulene
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    2 880
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 2 880
    Points : 2 953
    Points
    2 953
    Par défaut
    Salut,

    As-tu lu le message posté juste avant dans un autre fil de discussion? http://www.developpez.net/forums/sho...13&postcount=5

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    96
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Octobre 2007
    Messages : 96
    Points : 63
    Points
    63
    Par défaut
    Non je ne l'avais pas lu.

    Entre temps j'ai trouvé une astuce sur ce cours :
    http://gael-donat.developpez.com/web/intro-ajax/#LIII-B

    Malheureusement ça ne marche toujours pas comme je le voudrais.
    Je m'explique, j'ai :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    function recup()
    {
    window.document.getElementById("chargement").className="tumevois";
    alert("Chargement");
    // APPEL AJAX ( 30 appels environ et 10 secondes d'attente)		document.getElementById("chargement").className="tumevoispas";
    return 1;
    }
    Donc déjà si je suis le lien que tu m'as donné, le code de chargement va s'éxécuter 30 fois ce qui est lourd, je préfère encadrer mes appels ajax de chargement marche/arret.

    Le problème est que si je ne met pas mon alert, le code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    window.document.getElementById("chargement").className="tumevois";
    ne s'éxecute pas...

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    96
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Octobre 2007
    Messages : 96
    Points : 63
    Points
    63
    Par défaut
    si quelqu'un à une idée je suis preneur j'ai toujours ce problème.

  5. #5
    Membre confirmé
    Avatar de diden138
    Profil pro
    Développeur Web
    Inscrit en
    Mai 2006
    Messages
    714
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mai 2006
    Messages : 714
    Points : 589
    Points
    589
    Par défaut Re : bonjour
    ben ça framework moi je fais ça (pour un moteur de recherche par exemple)
    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
     
    xhr.onreadystatechange=function()
        {
    		if (xhr.readyState==4 && xhr.status==200)
    		{
    		  recherche=xhr.responseText;
    		  document.getElementById("article").innerHTML=recherche;
     
    		}
     
    		else
    		{
     
    		  document.getElementById("article").innerHTML="<div class='chargement' id='loading'>recherche en cours par exemple </br> <img src=\"images/loading.gif\" alt=\"loading\"  />  </div>";
     
    		}
     
     
    	}
    pour les images(loading.gif) tu trouvera ton bonheur ici
    cordialement @+

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    96
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Octobre 2007
    Messages : 96
    Points : 63
    Points
    63
    Par défaut
    merci pour ta réponse diden,

    malheureusement mon nombre d'appel ajax étant conséquent, ta technique alourdit beaucoup mon traitementil faudrait que je puisse entourer les appels ajax avec

    AfficherChargement();
    AppelsAjax;
    MasquerChargement();

    plutot que de chaque fois traiter l'image de chargement dans AppelsAjax qui s'éxécute un certain nombre de fois.

  7. #7
    Membre confirmé
    Avatar de diden138
    Profil pro
    Développeur Web
    Inscrit en
    Mai 2006
    Messages
    714
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mai 2006
    Messages : 714
    Points : 589
    Points
    589
    Par défaut Re : salut
    je ne vois pas pourquoi ça alourdirait explique je peux pas t'aider comme ça sinon si je suis ta logique j'aurais fais avant la boucle xhr.onreadystatechange j'affiche un div contenant l'image du loading j'appelle la fonction xhr.onreadystatechange .aprés je masque le div tous simplement ça donnerais ç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
     
    function traitement()
    { document.getElementById("article").innerHTML="<div class='chargement'   id='loading'>recherche en cours par exemple </br> <img src=\"images/loading.gif\" alt=\"loading\"  />  </div>";
     
    xhr.onreadystatechange=function()
        {
    		if (xhr.readyState==4 && xhr.status==200)
    		{
    		  recherche=xhr.responseText;
    		  document.getElementById("article").innerHTML=recherche;
     
    		}
      }
    	document.getElementById("article").innerHTML="";
    }
    ou tu bloque exactement j'ai pas compri ?
    cordialement @+

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    96
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Octobre 2007
    Messages : 96
    Points : 63
    Points
    63
    Par défaut
    Je te donne un extrait de mon code pour que tu ai une idée de ce que je fais;

    Sur ma page html qui effectue les appels ajax :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    <img border="0" src="Modulo_Images/add.png"  onClick="RecupDonnees();">
     
    <script>
    RecupDonnees()
    {
    AppelAjax1(...,FlagAffichChargement);
    AppelAjax2
    ...
    ...
    AppelAjax30(...,FlagMasqueChargement);
    }
    </script>
    Dans ma page js qui créer l'XMLHttpRequest :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    var xhr = ObtenirXhr();			
    xhr.onreadystatechange = function(){
    if ( FlagAffichChargement)
    document.getElementById("chargement").className="afficher";
    if ( FlagMasqueChargement)
    document.getElementById("chargement").className="cacher";

Discussions similaires

  1. [AJAX] include et chargement en cours
    Par ddelec24 dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 01/06/2007, 05h24
  2. [AJAX] AJAX Chat + Server perso (Sans SQL ni fichier text)
    Par |PaRa-BoL dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 14/01/2007, 04h37
  3. [AJAX] Chargement dynamique de CSS
    Par drannh dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 26/12/2006, 13h09
  4. [AJAX] temps de chargement
    Par GTJuanpablo dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 06/03/2006, 00h02

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