Rafraichir variable php avec ajax si nécéssaire

Consultez la formation au référencement naturel Google de WebRankInfo / Ranking Metrics


sff
WRInaute impliqué
WRInaute impliqué
 
Messages: 291
Inscription: Mer Fév 02, 2005 23:04

Rafraichir variable php avec ajax si nécéssaire

Message le Mar Sep 30, 2008 18:25

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: Tout sélectionner
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>

FloBaoti
WRInaute passionné
WRInaute passionné
 
Messages: 684
Inscription: Dim Avr 30, 2006 18:42

Re: Rafraichir variable php avec ajax si nécéssaire

Message le Mar Sep 30, 2008 19:03

sff a écrit: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.

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...


YoyoS
WRInaute accro
WRInaute accro
 
Messages: 3062
Inscription: Jeu Sep 14, 2006 4:53

Message le Mar Sep 30, 2008 19:23

Tu rajoutes un condition "est-ce que mon texte est différent de l'actuel" ici et le tour est joué:

Code: Tout sélectionner
          if (xmlhttp1.readyState == 4 && xmlhttp1.responseText != '') /* 4 : état "complete" */ {
             mondiv1.innerHTML = xmlhttp1.responseText;
            }


sff
WRInaute impliqué
WRInaute impliqué
 
Messages: 291
Inscription: Mer Fév 02, 2005 23:04

Message le Mer Oct 01, 2008 1:56

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.


YoyoS
WRInaute accro
WRInaute accro
 
Messages: 3062
Inscription: Jeu Sep 14, 2006 4:53

Message le Mer Oct 01, 2008 6:04

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 == ''


Bacteries
WRInaute accro
WRInaute accro
 
Messages: 1333
Inscription: Jeu Mai 27, 2004 13:04

Message le Mer Oct 01, 2008 8:26

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.


sff
WRInaute impliqué
WRInaute impliqué
 
Messages: 291
Inscription: Mer Fév 02, 2005 23:04

Suite

Message le Sam Oct 11, 2008 14:57

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

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

Code: Tout sélectionner
<?php

echo 'texte';

?>


Et j'ai la page test.php avec le js et la div qui affiche test2.php

Code: Tout sélectionner
<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é.


Bacteries
WRInaute accro
WRInaute accro
 
Messages: 1333
Inscription: Jeu Mai 27, 2004 13:04

Message le Sam Oct 11, 2008 17:31

Y'en a pas...

Le js ne peut communiquer avec ton serveur que via un requête http.


sff
WRInaute impliqué
WRInaute impliqué
 
Messages: 291
Inscription: Mer Fév 02, 2005 23:04

Message le Sam Oct 11, 2008 22:37

Donc il y a vraiment pas d'optimiser, c'est à dire de ne pas rafraichir inutilement?


zeb
WRInaute accro
WRInaute accro
 
Messages: 1186
Inscription: Dim Déc 05, 2004 19:47

Message le Dim Oct 12, 2008 11:30

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.


Formation recommandée sur ce thème :

Formation Référencement naturel Google : apprenez une méthode efficace pour optimiser à fond le référencement naturel dans Google de façon durable... Formation animée par Olivier Duffez et Fabien Facériès, experts en référencement naturel.

Tous les détails sur le site Ranking Metrics : programme, prix, dates et lieux, inscription en ligne.

Lectures recommandées sur ce thème :



Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 0 invités