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 :

onLoad=setTimeout et ajax


Sujet :

JavaScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre Expert
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2008
    Messages
    1 051
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Hautes Pyrénées (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 051
    Par défaut onLoad=setTimeout et ajax
    Bonjour,

    Je viens de créer un petit code sur une page HTML. J'aimerais que cette page appelle une fonction toutes les x secondes.

    Voilà mon body :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <body onLoad="javascript:setTimeout('getNouveauxTotaux()',2000);">
    J'ai également essayé avec :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <body onLoad="window.setTimeout('getNouveauxTotaux()',2000);">
    Cette fonction getNouveauxTotaux fait appele a une fonction d'ajax comme ceci :
    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
    function getNouveauxTotaux()
    {
    	var requete = null;
        try 
    	{
            requete = new XMLHttpRequest();
        } catch (essaimicrosoft) 
    		{
            try {
    			requete = new ActiveXObject("Msxml2.XMLHTTP");
                } catch (autremicrosoft) 
    			{
                try {
    				requete = new ActiveXObject("Microsoft.XMLHTTP");
                    } catch (echec) 
    				{
                        requete = null;
    				}
    			}
    		}
     
    	requete.onreadystatechange = function() 
    	{ 
    	if(requete.readyState == 4)
    		{
    			actualiserPage(requete);	
    		}
    	};
     
    	requete.open("GET","GetVenteJSON.php",true); 
    	requete.send(null);
     
    }
    Le code de la fonction actualiserPage() permet de récupérer 2 - 3 variables dans le fichier .php.

    Mon problème est que la fonction du body fonctionne bien .. mais une seule fois ! Alors que c'est censer faire appeller toutes les 2 secondes ici en occurences, il y a un conflit avec l'ajax vous pensez ?

    Je suis obligés de passer par cette fonction onload et settimeout ...

    Merci !

  2. #2
    Membre Expert
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2008
    Messages
    1 051
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Hautes Pyrénées (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 051
    Par défaut
    J'ai honte .. en fait fallait juste que je relance me fonction setTimeOut à la fin de ma fonction actualiserPage()

    Mais le setTimeOut ne suffit pas à lui seul normalement ?

  3. #3
    Rédacteur
    Avatar de marcha
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2003
    Messages
    1 571
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 571
    Par défaut
    Salut,

    c'est setInterval qui fait des appels récurrents, setTimeout ne lance
    qu'un appel.

  4. #4
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Par défaut
    Sinon, tu peux aussi faire:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    if(requete.readyState == 4)
    		{
    			actualiserPage(requete);
    			setTimeout(function(){getNouveauxTotaux()},2000);
    		}
    	};
    A+

  5. #5
    Rédacteur
    Avatar de marcha
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2003
    Messages
    1 571
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 571
    Par défaut
    Attention au cas où une requête n'aboutit pas (coupure réseau temporaire).
    la requete n'atteindra pas readyState 4 et il faudra rafraichir la page pour relancer le mécanisme.

  6. #6
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Par défaut
    Le readyState sera à 4 mais seulement le status ne sera pas à 200.

Discussions similaires

  1. SetTimeout interminable ajax
    Par Anonyme1784 dans le forum jQuery
    Réponses: 11
    Dernier message: 28/06/2015, 19h43
  2. [AJAX] - Rafraichissement d'un DIV avec setTimeOut
    Par Seb06 dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 13/03/2011, 00h07
  3. body onload avec l'ajax
    Par kaking dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 07/10/2008, 16h19
  4. [AJAX] Ajax et <body onload="..">
    Par Invité dans le forum Général JavaScript
    Réponses: 13
    Dernier message: 26/03/2007, 13h06
  5. SendAndLoad, onLoad et setTimeout
    Par imikado dans le forum Flash
    Réponses: 2
    Dernier message: 09/12/2006, 14h45

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