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 :

lancer une fonction toutes les 10s


Sujet :

JavaScript

  1. #1
    En attente de confirmation mail
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    1 249
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 1 249
    Points : 314
    Points
    314
    Par défaut lancer une fonction toutes les 10s
    bonjour,

    comment fait-on pour lancer une fonction JS toutes les dix secondes ?

  2. #2
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 637
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 637
    Points : 66 661
    Points
    66 661
    Billets dans le blog
    1
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    setInterval(function(){tafonction()},10000)
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  3. #3
    En attente de confirmation mail
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    1 249
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 1 249
    Points : 314
    Points
    314
    Par défaut
    merci,

    je l'ecrits où cette ligne de commande (comment faire pour qu'a l'ouverture de ma page la fonction soit lancée ?) ?

    ça tourne en boucle ou ça ne le fait qu'une fois ?

  4. #4
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 637
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 637
    Points : 66 661
    Points
    66 661
    Billets dans le blog
    1
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <body onload="setInterval(function(){tafonction()},10000)">
    c'est un setInterval, et c'était la question dons ça boucle

    c'est le setTimeout qui n'execute la fonction qu'une seule fois ...
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  5. #5
    En attente de confirmation mail
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    1 249
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 1 249
    Points : 314
    Points
    314
    Par défaut
    merci mais ça ne marche pas encore

    donc voici mon code : c'est une page qui doit se rafraichir toutes les 5s en allant chercher des variables dans un fichier .json

    fichier html:
    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
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    	<head>
    		<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
            <script type="text/javascript" src="RecupereVariables.js"></script>
    	</head>
     
    	<body onload="setInterval(function(){makeRequest(url)},5000)">
            <noscript> La page ne peut pas être affichée correctement car Javascript n'est pas activé</noscript>
     
    		<span style="cursor: pointer; text-decoration: underline;" onclick="makeRequest('./data.json')">
                    Lancer la requete
            </span>
     
    		<p>Ma Variable 1 : <span id="mot1">Valeur 1</span></p>
    		<p>Ma Variable 2 : <span id="mot2">Valeur 2</span></p>
     
        </body>
    </html>

    fichier .json :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    var JSONvariables = { 
    	"variable1_json": "toto", 
    	"variable2_json": "tata" 
    }
    fichier .js :
    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
     
    var http_request = false;
     
    function makeRequest(url) {
     
    	http_request = false;
     
    	http_request = new XMLHttpRequest();
     
    	if (!http_request) {
    		alert('Impossible de créer un objet XMLHTTP');
    		return false;
    	} 
     
    	http_request.onreadystatechange = request_execute;
    	http_request.open('GET', url, true);
    	http_request.send(null);
    }
     
    function request_execute() {
     
    	if (http_request.readyState == 4) {
     
    		if (http_request.status == 200) {
     
    			eval(http_request.responseText);
     
    			document.getElementById('mot1').innerHTML = JSONvariables.variable1_json;
    			document.getElementById('mot2').innerHTML = maVariable.variable2_json;			
    		} else {
    			alert('Il y a un problème avec la requète XMLHTTP');
    		}
    	}	
    }

  6. #6
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 637
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 637
    Points : 66 661
    Points
    66 661
    Billets dans le blog
    1
    Par défaut
    quel est le message d'erreur ?
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  7. #7
    En attente de confirmation mail
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    1 249
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 1 249
    Points : 314
    Points
    314
    Par défaut
    j'en ai pas..

    le rafraichissement marche si je clique sur "Lancer la requete" : a priori il y a un probleme sur la fonction d'appel toutes les 5s

  8. #8
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 637
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 637
    Points : 66 661
    Points
    66 661
    Billets dans le blog
    1
    Par défaut
    tu n'aurais pas un souci avec la requete non terminée avant d'en lancer une autre ?
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  9. #9
    En attente de confirmation mail
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    1 249
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 1 249
    Points : 314
    Points
    314
    Par défaut
    je ne pense pas car j'ai mis des alert('execution OK'); au debut de mes deux finctions, et ça ne s'execute jamais....

  10. #10
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 637
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 637
    Points : 66 661
    Points
    66 661
    Billets dans le blog
    1
    Par défaut
    et si dans le onload tu mets un alert de url ... il te dit quoi ?
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  11. #11
    En attente de confirmation mail
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    1 249
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 1 249
    Points : 314
    Points
    314
    Par défaut
    si je mets alert(url);, il n'y a rien qui se passe par contre si je mets alert('toto');, ça s'affiche.

    si je mets alert(url); dans la premiere ligne de la fonction makeRequest et que je charge la page, rien ne se passe. par contre si je clique sur "Lancer la requete", j'ai bien l'url du fichier .json qui s'affiche

  12. #12
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 637
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 637
    Points : 66 661
    Points
    66 661
    Billets dans le blog
    1
    Par défaut
    essaye de mettre un setTimeout sur le lancement de la fonction dasn le onload ...
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  13. #13
    En attente de confirmation mail
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    1 249
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 1 249
    Points : 314
    Points
    314
    Par défaut
    je suis trop bete, la variable url n'avait pas de valeur
    => il suffisait de faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <body onload="setInterval(function(){makeRequest('./data.json')},5000)">
    par contre, que se passe t-il si la connection est coupée puis rétablie ? ça va lancé d'un coup toutes les requetes qui n'ont pas été effectuées pendant le temps de la coupure ou est-ce que ça va en executer qu'une ?

    je voudrais afficher dans ma page Web un champs connecté/deconnecté : comment dois-je faire ?

  14. #14
    En attente de confirmation mail
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    1 249
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 1 249
    Points : 314
    Points
    314
    Par défaut
    j'ai essayé de deconnceter/reconnecter mon cable reseau => l'appli n'arrive pas à reprendre la main...

  15. #15
    En attente de confirmation mail
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    1 249
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 1 249
    Points : 314
    Points
    314
    Par défaut
    Citation Envoyé par Emcy
    je voudrais afficher dans ma page Web un champs connecté/deconnecté : comment dois-je faire ?
    pas de reponse ? dois-je en conclure que c'est impossible ?

  16. #16
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 637
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 637
    Points : 66 661
    Points
    66 661
    Billets dans le blog
    1
    Par défaut
    tu veux dire connecté ajax ?
    lance dasn un setInterval un test sur le readystatus ...
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  17. #17
    En attente de confirmation mail
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    1 249
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 1 249
    Points : 314
    Points
    314
    Par défaut
    je veux savoir si mon fichier json (là où est effectué la requete) est accessible.
    Peux tu me donner la ligne de commande complete (c'est un peu vague) ?

    Pour l'instant j'utlise cette methode (en attendant de voir si la tienne est meilleur) :

    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
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    var http_request = false;
    var num_refresh1 = 0;
    var num_refresh2 = 0;
     
    var num_connection = 1;
    var num_connectionbefore = 0;
     
    //setInterval(function(){tafonction()},2000);
     
    function fonction_start(){
    	var fichier_json = './data.json';
    	makeRequest(fichier_json);
    	setInterval(function(){makeRequest(fichier_json)},5000); //  boucle toutes les 5s
    }
     
    function makeRequest(url) {
     
    	http_request = false;
    	num_refresh1++;
    	document.getElementById('refresh1').innerHTML = num_refresh1;
     
    	// detection de connection
    	if (num_connectionbefore == num_connection){
    		document.getElementById('ComStatus').innerHTML = 'OFF';
    	}
    	else {
    		document.getElementById('ComStatus').innerHTML = 'ON';
    	}
    	num_connectionbefore = num_connection;
     
    	if (window.XMLHttpRequest) { // Mozilla, Safari,...
    		http_request = new XMLHttpRequest();
    		if (http_request.overrideMimeType){
    			http_request.overrideMimeType('text/plain');
    		}
    	// IE 
    	} else if (window.ActiveXObject) { 
    		try {
    			http_request = new ActiveXObject("Msxml2.XMLHTTP");
    		} catch (e) {
    			try {
    			http_request = new ActiveXObject("Microsoft.XMLHTTP");
    			} catch (e) {}
    		}
    	}
     
    	if (!http_request) {
    		alert('Impossible de créer un objet XMLHTTP 1');
    		return false;
    	} 
     
    	http_request.onreadystatechange = request_execute;
    	http_request.open('GET', url, true);
    	http_request.send(null);
    }
     
    function request_execute() {
    	//alert('execution de la fonction');
     
    	if (http_request.readyState == 4) {
     
    		if (http_request.status == 200) {
    			eval(http_request.responseText);
     
    			num_refresh2++; // addition num_refresh = num_refresh + 1
    			num_connection++;
     
    			document.getElementById('refresh2').innerHTML = num_refresh2;
     
    			document.getElementById('SerialNumber').innerHTML = JSONvariables.SerialNumber;			
    			} 
    		else {
    			document.getElementById('ComStatus').innerHTML = 'OFF';
    		}
    	}	
    }
    j'utilise les variables num_connection et num_connectionbefore pour connaitre l'etat de la connection

    => ça marche très bien sous firefox mais sous IE ça ne marche pas correctement : les variables num_refresh1 et num_refresh2 sont bien mise à jour mais mes variables qui sont dans le fichier json ne sont pas rafraichie. De +, si je coupe le cable, ma connection est toujour detectée comme ON et num_refresh1 est toujour egal a num_refresh2 (????)

  18. #18
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 637
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 637
    Points : 66 661
    Points
    66 661
    Billets dans le blog
    1
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if (http_request.readyState == 4) {
    tu l'utilises déja le ready state ...
    renseigne toi sur les différentes valeurs possible ... (dasn le tuto de siddh par exemple )
    teste ensuite sa valeur
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  19. #19
    En attente de confirmation mail
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    1 249
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 1 249
    Points : 314
    Points
    314
    Par défaut
    et pour le le probleme sous IE (6 et 7) : pas de solution ?

  20. #20
    En attente de confirmation mail
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    1 249
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 1 249
    Points : 314
    Points
    314
    Par défaut
    j'ai vu que le text est écrit soit entre '' soit entre "" : dans quel cas faut-il utiliser l'un ou l'autre ?

    ex 'toto' ou "toto" ?

Discussions similaires

  1. [Prototype] Lancer une fonction toutes les x millisecondes
    Par DevilYann dans le forum Bibliothèques & Frameworks
    Réponses: 4
    Dernier message: 25/01/2010, 11h03
  2. Lancer une fct toutes les x minutes
    Par mambo dans le forum MFC
    Réponses: 8
    Dernier message: 21/06/2006, 23h16
  3. lancer une procedure toutes les minutes precisemment
    Par Alextk dans le forum SQL Procédural
    Réponses: 1
    Dernier message: 06/06/2006, 15h10
  4. Réponses: 8
    Dernier message: 09/01/2006, 16h58
  5. Réponses: 9
    Dernier message: 14/12/2005, 21h05

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