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

AJAX Discussion :

[AJAX] Boucle sur fonction SendGetRequest


Sujet :

AJAX

  1. #1
    Futur Membre du Club
    Inscrit en
    Octobre 2009
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Octobre 2009
    Messages : 8
    Points : 5
    Points
    5
    Par défaut [AJAX] Boucle sur fonction SendGetRequest
    Bonjour,

    Je rencontre un ptit soucis, je souhaite actualiser par l'ajax les coordonnes d'un DIV toutes les 2 secondes. (il y aura au final plein de div)
    (J'espère être clair dans mes explications)
    J'ai créer donc une classe en javscript.

    voici la partie HTML :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    <div name='box1' id='box1'></div>
    <div name='box2 > etc.....
     
    <script>
     var mDossier1 =  dossiertype(1);
     var mDossier2 =  dossiertype(2);
    </script>
    Voici le script :
    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
    // la classe :
    function dossiertype(a) {
    
      this.SendGetRequest=function() {
       var cde=document.getElementById("cbox"+a).value;
       var xhr_url = 'ajax/lirecoo.asp?a='+a+'&cde='+cde; //page qui récupère les coordonnees X Y de la DIV en question
    
       if ( window.XMLHttpRequest ) {
    		// Objet XmlHttpRequest pour les moteurs GECKO
    		xhr_object = new XMLHttpRequest();   
    	} else if ( window.ActiveXObject ) {
    		// Objet XmlHttpRequest pour Internet Explorer
    		xhr_object = new ActiveXObject( 'Microsoft.XMLHTTP' );   
    	} else {
    		// Navigateur non-compatible
    		alert( 'Votre navigateur ne supporte pas les objets XMLHTTPRequest...' );   
    		return;
    	}
    	// On ouvre la requete vers la page désirée
    	xhr_object.open('GET', xhr_url, true );
    	// On lui donne le pointeur de fonction de retour
    	xhr_object.onreadystatechange = this.CallBackRequest;
    	// On envoi la requete
    	xhr_object.send( null );
        return true;
    }
    
      this.CallBackRequest=function() {
        
    	// Sur le retour de la requete, on teste son état
        if ( xhr_object.readyState == 4 ) {
    
    		// On injecte notre retour dans la DIV prevue a cet effet
    	    valeur = xhr_object.responseText;
    	    x=valeur.substring(0,valeur.indexOf(","));
    		y=valeur.substring(valeur.indexOf(",")+1,valeur.indexOf(";"));
    		a=valeur.substring(valeur.indexOf(";")+1,valeur.length);
    		//alert('x :' + x + ' y: ' + y);
    		if (x!=0 && y!=0) {
    		 document.getElementById("box"+a).style.top=y;
             document.getElementById("box"+a).style.left=x;
            }
           setTimeOut("this.SendGetRequest();", 2000); // Reatualisation auto 2 sec
    	}
     }// Fin callBack
    
    }
    Le rappel de cette fonction : this.SendGetRequest(); ne semble pas fonctionne et je ne trouve pas pourquoi !

    Le but final serait d'avoir sur deux postes différents la même application, lorsqu'un DIV est déplacé, cela le déplace automatiquement sur l'autre poste.

    Merci pour aide.

  2. #2
    Expert confirmé
    Avatar de RomainVALERI
    Homme Profil pro
    POOête
    Inscrit en
    Avril 2008
    Messages
    2 652
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : POOête

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 652
    Points : 4 164
    Points
    4 164
    Par défaut
    Il semble que tu perds la référence du "this" quand le setTimeOut se déclenche et interprète la chaine fournie... pourquoi passer par une méthode d'un objet ? Passe ta fonction en global pour voir... ^^

    ...pour les linguistes et les curieux >>> générateur de phrases aléatoires

    __________________

  3. #3
    Futur Membre du Club
    Inscrit en
    Octobre 2009
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Octobre 2009
    Messages : 8
    Points : 5
    Points
    5
    Par défaut
    Effectivement, je perds le this.
    En global, cela ne me sert pas vraiment ou alors j'ai rien panné !

    En fait je veux pouvois appeler la fonction plusieurs fois comme ca :

    mDossier1.SendGetRequest();
    mDossier2.SendGetRequest();

    Cela me permettrait d'avoir une requete AJAX indépendante pour chaque DIV.

    De plus sans setTimeout, j'arrive à le faire fonctionner pour 1 seul div à la fois... grrr

    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
    function dossiertype(a) {
     
      var ObID=this;
      
      this.SendGetRequest=function() {
       //alert(a);
       var cde=document.getElementById("cbox"+a).value;
       var xhr_url = 'ajax/lirecoo.asp?a='+a+'&cde='+cde;
    
       if ( window.XMLHttpRequest ) {
    		// Objet XmlHttpRequest pour les moteurs GECKO
    		xhr_object = new XMLHttpRequest();   
    	} else if ( window.ActiveXObject ) {
    		// Objet XmlHttpRequest pour Internet Explorer
    		xhr_object = new ActiveXObject( 'Microsoft.XMLHTTP' );   
    	} else {
    		// Navigateur non-compatible
    		alert( 'Votre navigateur ne supporte pas les objets XMLHTTPRequest...' );   
    		return;
    	}
    	// On ouvre la requete vers la page désirée
    	xhr_object.open('GET', xhr_url, true );
    	// On lui donne le pointeur de fonction de retour
    
    	xhr_object.onreadystatechange = function() {
        
    	// Sur le retour de la requete, on teste son état
        if ( xhr_object.readyState == 4 ) {
       
    		// On injecte notre retour dans la DIV prevue a cet effet
    	    valeur = xhr_object.responseText;
    	    x=valeur.substring(0,valeur.indexOf(","));
    		y=valeur.substring(valeur.indexOf(",")+1,valeur.indexOf(";"));
    		a=valeur.substring(valeur.indexOf(";")+1,valeur.length);
    		//alert('x :' + x + ' y: ' + y);
    		if (x!=0 && y!=0) {
    		 document.getElementById("box"+a).style.top=y;
             document.getElementById("box"+a).style.left=x;
            }   
            ObID.SendGetRequest();   
    	}
     }// Fin callBack
    	// On envoi la requete
    	xhr_object.send( null );
     
    }
    
    
    }

  4. #4
    Expert confirmé
    Avatar de RomainVALERI
    Homme Profil pro
    POOête
    Inscrit en
    Avril 2008
    Messages
    2 652
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : POOête

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 652
    Points : 4 164
    Points
    4 164
    Par défaut
    Citation Envoyé par beworld Voir le message
    En fait je veux pouvois appeler la fonction plusieurs fois comme ca :

    mDossier1.SendGetRequest();
    mDossier2.SendGetRequest();
    Et que penses-tu de modifier ta méthode pour accepter un dossier en argument, et faire :

    Code javascript : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    SendGetRequest(mDossier1);
    ?

    ...pour les linguistes et les curieux >>> générateur de phrases aléatoires

    __________________

Discussions similaires

  1. Réponses: 0
    Dernier message: 30/03/2009, 19h45
  2. Boucle sur des fonctions
    Par isa150183 dans le forum Langage
    Réponses: 4
    Dernier message: 14/09/2007, 17h50
  3. [Prototype] Passage de variable sur fonction new Ajax.Request
    Par Overstone dans le forum Bibliothèques & Frameworks
    Réponses: 3
    Dernier message: 31/08/2007, 11h36
  4. [Mail] Boucle sur fonction mail()
    Par Invité dans le forum Langage
    Réponses: 2
    Dernier message: 11/06/2007, 22h26
  5. [AJAX] aide sur fonction ajax navigation
    Par speedylol dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 13/11/2006, 14h17

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