Rafraichir variable php avec ajax si nécéssaire

Discussion dans 'Développement d'un site Web ou d'une appli mobile' créé par sff, 30 Septembre 2008.

  1. sff
    sff WRInaute impliqué
    Inscrit:
    2 Février 2005
    Messages:
    533
    J'aime reçus:
    0
    Bonjour, j'ai encore un problème avec Ajax. En effet le code suivant fonctionne parfaitement. Il recharge toute les 2 secondes le contenu d'une page dans une <div>

    Ce que je cherche à faire, c'est recharger le contenu de la page dans la div, seulement ci le contenu de la page à changer, histoire de ne pas utiliser de la ressource pour rien.

    Voici le code qui fonctionne :
    Code:
    function getDiv1(MyDiv, MyUrl) { 
    
    var xmlhttp1 = null;  
    	 
    	var mondiv1 = document.getElementById(MyDiv); 
    		 
    	if (!mondiv1) { 
      		return 1; 
      	} 
      
        if (xmlhttp1 && xmlhttp1.readyState != 0) { 
            xmlhttp1.abort(); 
    	} 
      
    	xmlhttp1 = getXMLHTTP(); 
      
        if (xmlhttp1) { 
      
    		xmlhttp1.open("GET", MyUrl, true);  
      
         	/* on définit ce qui doit se passer quand la page répondra */ 
          	 
          	xmlhttp1.onreadystatechange = function() { 
          		 
          		if (xmlhttp1.readyState == 4 && xmlhttp1.responseText != '') /* 4 : état "complete" */ { 
    		    	mondiv1.innerHTML = xmlhttp1.responseText; 
          		} 
    		} 
          	 
          	xmlhttp1.send(null); 
         } 
    }
    
    function rafraichir()
    {		
      getDiv1('babblebox', '?do=babblebox');
      setTimeout("rafraichir()", 2000);
      
    }
    window.onload = function() { rafraichir();}
    
    
    Dans la page html :
    
    <div id="babblebox"></div>
     
  2. FloBaoti
    FloBaoti WRInaute impliqué
    Inscrit:
    30 Avril 2006
    Messages:
    640
    J'aime reçus:
    0
    Et comment sais-tu quand "le contenu de la page a changé" ?

    Une fois cette question résolue, tu sauras certainement comment la mettre en place...
     
  3. YoyoS
    YoyoS WRInaute accro
    Inscrit:
    14 Septembre 2006
    Messages:
    3 226
    J'aime reçus:
    0
    Tu rajoutes un condition "est-ce que mon texte est différent de l'actuel" ici et le tour est joué:

    Code:
              if (xmlhttp1.readyState == 4 && xmlhttp1.responseText != '') /* 4 : état "complete" */ {
                 mondiv1.innerHTML = xmlhttp1.responseText;
                } 
     
  4. sff
    sff WRInaute impliqué
    Inscrit:
    2 Février 2005
    Messages:
    533
    J'aime reçus:
    0
    Imaginons que dans la div en question on rafraichit une page affichant les enregistements d'une table sql.

    On a juste à vérifier, si le nombre d'enregistrement dans cette table est différent ou pas.

    Mais tout ceci se situe coté php, donc comment récupérer ces infos dans le javascript?

    Genre si le nombre d'enregistrement a changer on peut faire un echo, une alert()... mais comment récupérer tout ca pour faire une condition dans le js.

    Merci à ceux qui m'aideront.
     
  5. YoyoS
    YoyoS WRInaute accro
    Inscrit:
    14 Septembre 2006
    Messages:
    3 226
    J'aime reçus:
    0
    Tu récupères pas justement, tu as géré ce cas avec xmlhttp1.responseText != '' -_-'

    Quand c'est le meme, bah le fichier php ne renvoie rien et donc xmlhttp1.responseText == ''
     
  6. Bacteries
    Bacteries WRInaute passionné
    Inscrit:
    27 Mai 2004
    Messages:
    1 253
    J'aime reçus:
    0
    Tu n'as pas de moyen de savoir si ton contenu a changé autrement qu'en interrogeant un fichier externe. Donc y'aura forcément un traitement en PHP.
     
  7. sff
    sff WRInaute impliqué
    Inscrit:
    2 Février 2005
    Messages:
    533
    J'aime reçus:
    0
    Suite

    Non désolé, mais j'arrive pas.

    J'ai une page test2.php avec un echo :

    Code:
    <?php
    
    echo 'texte';
    
    ?>
    Et j'ai la page test.php avec le js et la div qui affiche test2.php

    Code:
    <html>
    
    <script type="text/javascript"> 
    
    
    // Fonction pour Ajax
    	   
    function getXMLHTTP()
    {
        var xhr=null;
    
        if (window.XMLHttpRequest) // Firefox et autres.
             xhr = new XMLHttpRequest();
        else if (window.ActiveXObject) // Internet Explorer.
        {
             try
             {
                 xhr = new ActiveXObject("Msxml2.XMLHTTP");
             }
             catch (e)
             {
                    try
                    {
                           xhr = new ActiveXObject("Microsoft.XMLHTTP");
                    }
                    catch (e1)
                    {
                         xhr = null;
                    }
             }
         }
         else
            alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest...");
       return xhr;
    }
    
    // Div refresh.
    
    function getDiv1(MyDiv, MyUrl) { 
    
    var xmlhttp1 = null;  
    	 
    	var mondiv1 = document.getElementById(MyDiv); 
    		 
    	if (!mondiv1) { 
      		return 1; 
      	} 
      
        if (xmlhttp1 && xmlhttp1.readyState != 0) { 
            xmlhttp1.abort(); 
    	} 
      
    	xmlhttp1 = getXMLHTTP(); 
      
        if (xmlhttp1) { 
      
    		xmlhttp1.open("GET", MyUrl, true);  
      
         	/* on définit ce qui doit se passer quand la page répondra */ 
          	 
          	xmlhttp1.onreadystatechange = function() { 
          		 
          		if (xmlhttp1.readyState == 4 && xmlhttp1.responseText != '') /* 4 : état "complete" */ { 
    		    
    			mondiv1.innerHTML = xmlhttp1.responseText; 
    	
          		}
    		} 
          	 
          	xmlhttp1.send(null); 
         } 
    }
    
    function rafraichir()
    {		
      getDiv1('test2', 'test2.php');
      setTimeout("rafraichir()", 1000);
      
    }
    window.onload = function() { rafraichir();}
    
    
    </script>
     
    </script> 
    <body> 
    <DIV ID="test2">
    
    
    </div>
    </body> </html>
    Je vois vraiment pas comment faire pour que le js arrête de charger toutes les seconde test2.php tant que cette page n'a pas changé.
     
  8. Bacteries
    Bacteries WRInaute passionné
    Inscrit:
    27 Mai 2004
    Messages:
    1 253
    J'aime reçus:
    0
    Y'en a pas...

    Le js ne peut communiquer avec ton serveur que via un requête http.
     
  9. sff
    sff WRInaute impliqué
    Inscrit:
    2 Février 2005
    Messages:
    533
    J'aime reçus:
    0
    Donc il y a vraiment pas d'optimiser, c'est à dire de ne pas rafraichir inutilement?
     
  10. zeb
    zeb WRInaute accro
    Inscrit:
    5 Décembre 2004
    Messages:
    12 021
    J'aime reçus:
    1
    le seul truc que tu peut gagner est de ne pas changer le contenu de ta page html si le contenu renvoyé est vide (parce que pas de changement) c'est de la BP que tu gagnera mais tu sera forcé de faire tourner qque chose côté serveur pour savoir si oui ou non qque a changé dans la base.
     
Chargement...
Similar Threads - Rafraichir variable php Forum Date
Rafraichir variable php avec ajax Développement d'un site Web ou d'une appli mobile 28 Octobre 2007
Rafraichir ma page PHP Développement d'un site Web ou d'une appli mobile 24 Décembre 2011
forcer google à rafraichir une page (qui n'est pas de mon site) Crawl et indexation Google, sitemaps 10 Juin 2010
rafraichir l'indexation d'une page? Crawl et indexation Google, sitemaps 14 Septembre 2009
Rafraichir div avec ajax Développement d'un site Web ou d'une appli mobile 18 Février 2008
[AJAX] Rafraichir une page avec un bouton Développement d'un site Web ou d'une appli mobile 23 Mars 2007
Rafraichir la page en cache dans Google d'un site tiers Crawl et indexation Google, sitemaps 21 Novembre 2006
Formulaire soumit plusieurs fois avec F5 ou rafraichir Administration d'un site Web 17 Mars 2005
Rafraichir la référence Référencement Google 9 Juin 2003
En PHP : enregistrer un id de page/user variable. Développement d'un site Web ou d'une appli mobile 3 Octobre 2022
grande image centrer verticalement dans DIV avec largeur variable de l'ecran Développement d'un site Web ou d'une appli mobile 28 Juin 2022
Comment GET => variables de classe ? Développement d'un site Web ou d'une appli mobile 23 Mai 2022
variable non lue dans boucle IF Développement d'un site Web ou d'une appli mobile 25 Mars 2022
Comparer une variable dans IF Développement d'un site Web ou d'une appli mobile 25 Mars 2022
Variables SetEnv dans un fichier htaccess URL Rewriting et .htaccess 25 Décembre 2021
Structure Hn variable Référencement Google 26 Septembre 2021
je n arrive pas a masquer les variables dans mon url URL Rewriting et .htaccess 31 Juillet 2021
Cache avec contenu variable ? Développement d'un site Web ou d'une appli mobile 2 Décembre 2020
Schémas identiques, variables $2 et $_GET différents URL Rewriting et .htaccess 13 Novembre 2020
Redirection avec variables dans l'URL URL Rewriting et .htaccess 26 Novembre 2019