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 :

setinterval : pour répétition


Sujet :

JavaScript

  1. #1
    Membre éclairé
    Avatar de Darkyl
    Homme Profil pro
    autodidacte en recherche d'emploi
    Inscrit en
    Novembre 2004
    Messages
    440
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : autodidacte en recherche d'emploi

    Informations forums :
    Inscription : Novembre 2004
    Messages : 440
    Billets dans le blog
    1
    Par défaut setinterval : pour répétition
    bonjour,

    Je voudrais répéter une fonction toutes les secondes mais j'ai beau tout tester, cela ne marche pas.

    Quelqu'un aurait-il une idée?

    Le problème vient peut-être du fait que je doive lui passer des paramètres à ma fonction mais j'ai cherché sur internet et apparemment c'est bien ce que j'ai écris...



    <script language="JavaScript" src="affichepagedansdiv.js">

    setInterval(function() { envoieRequete(baticonstru.php,centre); },1000);

    </script>
    envoieRequete(page,div ); est une fonction que j'ai trouvé sur internet pour charger une page html ou php dans un div. J'ai vérifié,elle marche, même avec les paramètres voulus.
    Le hic, c'est qu'il ne se passe rien...

  2. #2
    Membre éclairé
    Avatar de Darkyl
    Homme Profil pro
    autodidacte en recherche d'emploi
    Inscrit en
    Novembre 2004
    Messages
    440
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : autodidacte en recherche d'emploi

    Informations forums :
    Inscription : Novembre 2004
    Messages : 440
    Billets dans le blog
    1
    Par défaut
    j'ai essayer ça :
    <script language="JavaScript" src="affichepagedansdiv.js">
    var req=function(baticonstru.php,centre){ envoieRequete(); };

    setInterval(req,1000);
    </script>
    sans résultat

  3. #3
    Membre chevronné Avatar de nadox
    Homme Profil pro
    Développeur
    Inscrit en
    Février 2010
    Messages
    360
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Développeur
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2010
    Messages : 360
    Par défaut
    Bonjour,

    Ta page n'est pas un objet, mais une chaine de caractère...
    De même, à quel endroit déclare tu "centre" ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
     
    <script type="text/javascript" src="affichepagedansdiv.js">
     
    setInterval(function() { envoieRequete("baticonstru.php",centre); },1000);
     
    </script>

  4. #4
    Membre éclairé
    Avatar de Darkyl
    Homme Profil pro
    autodidacte en recherche d'emploi
    Inscrit en
    Novembre 2004
    Messages
    440
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : autodidacte en recherche d'emploi

    Informations forums :
    Inscription : Novembre 2004
    Messages : 440
    Billets dans le blog
    1
    Par défaut
    bonjour,
    c'est drole, j'arrête pas de lire des réponses de toi (nadox) depuis tout à l'heure sur le forum, tu es prolifique.
    Je te remercie de ton aide.

    Je crois que tu as tué 2h de recherche car tu as raison pour le div:

    En fait, j'ai une page générale qui a un div 'centre'. Dans ce div vient s'afficher une page quand j'appuie sur un bouton. J'aimerai que la page affichée dans le div s'actualise toute les sec... C'est pourquoi j'ai mis le code vu plus haut dans la page qui s'affiche...pas dans la générale ou il y a le div.

    Heu, je sais pas si je suis clair...

  5. #5
    Membre éclairé
    Avatar de Darkyl
    Homme Profil pro
    autodidacte en recherche d'emploi
    Inscrit en
    Novembre 2004
    Messages
    440
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : autodidacte en recherche d'emploi

    Informations forums :
    Inscription : Novembre 2004
    Messages : 440
    Billets dans le blog
    1
    Par défaut
    j'ai trouvé ca sur le forum:
    <script language="javascript">
    window.onload = auto_refresh;

    function auto_refresh()
    {
    new Ajax.Updater('la_zone_a_maj', 'le_fichier_php.php', {parameters:'mode=auto_refresh', evalScripts:true, asynchronous:true})

    setTimeout("auto_refresh()",5000);
    return true
    }

    </script>
    et plus loin:

    <ul id="la_zone_a_maj"></ul>
    mais cela ne marche pas non plus, il me dit qu'il ne connait pas AJAX

  6. #6
    Membre chevronné Avatar de nadox
    Homme Profil pro
    Développeur
    Inscrit en
    Février 2010
    Messages
    360
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Développeur
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2010
    Messages : 360
    Par défaut
    Ben il faut utiliser le setInterval directement dans le gestionnaire d'évènement du click sur le bouton. Après, je ne sais pas comment ta page est injectée...(iframe, Ajax, script dynamique)
    Peut-être qu'il serait plus judicieux de modifier le code de la fonction envoieRequete.

    Pour ton dernier post, le code ne peut pas fonctionner si tu n'a pas le script qui contient Ajax.Updater (framework prototype).

  7. #7
    Membre éclairé
    Avatar de Darkyl
    Homme Profil pro
    autodidacte en recherche d'emploi
    Inscrit en
    Novembre 2004
    Messages
    440
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : autodidacte en recherche d'emploi

    Informations forums :
    Inscription : Novembre 2004
    Messages : 440
    Billets dans le blog
    1
    Par défaut
    bon, j'ai téléchargé le fichier prototype.js, et j'ai changé le code
    <script language="javascript" src="prototype.js">
    window.onload = auto_refresh;

    function auto_refresh()
    {
    new Ajax.Updater('centre', 'baticonstru.php', {parameters:'mode=auto_refresh', evalScripts:true, asynchronous:true})

    setTimeout("auto_refresh()",1000);
    return true
    }

    </script>
    puis
    <ul id="centre"></ul>
    j'ai plus d'erreur, il me dit plus qu'il ne connait pas ajax mais il ne se passe toujours rien

  8. #8
    Membre chevronné Avatar de nadox
    Homme Profil pro
    Développeur
    Inscrit en
    Février 2010
    Messages
    360
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Développeur
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2010
    Messages : 360
    Par défaut
    Ta balise script a un src : donc le contenu de la balise final sera le contenu du fichier. Ce que tu y a écrit sera écrasé.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    <script type="text/javascript" src="prototype.js"></script>
     <script type="text/javascript">
    function auto_refresh()
    {
    	new Ajax.Updater('centre', 'baticonstru.php', {evalScripts:true, asynchronous:true})
     
      setTimeout("auto_refresh()",1000);
      return true;
    }
     window.onload = auto_refresh; // surement à remplacer par monbouton.click = auto_refresh;
    </script>

  9. #9
    Membre éclairé
    Avatar de Darkyl
    Homme Profil pro
    autodidacte en recherche d'emploi
    Inscrit en
    Novembre 2004
    Messages
    440
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : autodidacte en recherche d'emploi

    Informations forums :
    Inscription : Novembre 2004
    Messages : 440
    Billets dans le blog
    1
    Par défaut
    j'ai suivi tes remarque,j'ai fait ca:
    <script type="text/javascript" src="prototype.js"></script>
    <script language="javascript">
    window.onload = auto_refresh;

    function auto_refresh()
    {
    new Ajax.Updater('centre2', 'baticonstru.php', {parameters:'mode=auto_refresh', evalScripts:true, asynchronous:true})

    setTimeout("auto_refresh()",1000);
    return true
    }

    </script>


    <ul id="centre2">
    </ul>
    , ca marchait mais la, j'ai voulu reactualiser la page générale et ca rame...ca veux plus.c'est pas mon settimeout qui est encore en marche?

  10. #10
    Membre éclairé
    Avatar de Darkyl
    Homme Profil pro
    autodidacte en recherche d'emploi
    Inscrit en
    Novembre 2004
    Messages
    440
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : autodidacte en recherche d'emploi

    Informations forums :
    Inscription : Novembre 2004
    Messages : 440
    Billets dans le blog
    1
    Par défaut
    le dernier code que j'ai posté marche. Super, merci beaucoup. Ca fait une plombe que j'essaie. Et ca rame plus, vraiment merci. Dernières questions avant de résoudre:

    - Ajax (à défaut ce code) est compatible tous navigateur?
    - Un setinterval une fois lancé est détruit quand la page est fermé?

  11. #11
    Membre chevronné Avatar de nadox
    Homme Profil pro
    Développeur
    Inscrit en
    Février 2010
    Messages
    360
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Développeur
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2010
    Messages : 360
    Par défaut
    Tu devrais définir le onload de la page après ta fonction(juste une question de lisibilité...)

    Je crois que ta façon de faire est un peut risquée. Ton setTimeout est fixé à 1 seconde, mais rien ne t'assure que l'Ajax.Updater mettra moins d'une seconde à s'éxécuter. Ainsi, tu risque de te retrouver avec des appels Ajax parallèles qui chercheront à mettre à jour la div de façon aléatoire...

    Si tu veux continuer à utiliser Prototype, tu peux utiliser le Ajax.PeriodicalUpdater qui semble faire ce que tu veux d'une façon plus "sécurisée".

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    <script type="text/javascript" src="prototype.js"></script>
    <script type="text/javascript">
    function auto_refresh()
    {
        new Ajax.PeriodicalUpdater('centre2', 'baticonstru.php');
      }
     window.onload = auto_refresh;
    </script>
    <ul id="centre2">
    </ul>
    EDIT : j'étais en train de poster quand tu as envoyé ton dernier post.

    Pour tes deux questions :
    1/ pas de soucis de compatibilité, mais il peut y avoir un soucis avec le cache de IE --> http://www.developpez.net/forums/d45...ax-updater-ie/

    2/ Tout les objet sont normalement détruit lorsque l'on change de page.
    De plus tu utilise un setTimeout, donc un exécution unique avec un délai.

  12. #12
    Membre éclairé
    Avatar de Darkyl
    Homme Profil pro
    autodidacte en recherche d'emploi
    Inscrit en
    Novembre 2004
    Messages
    440
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : autodidacte en recherche d'emploi

    Informations forums :
    Inscription : Novembre 2004
    Messages : 440
    Billets dans le blog
    1
    Par défaut
    merci beaucoup nadox, je m'en vais tester tous ça. c'est résolu pour moi..

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 4
    Dernier message: 15/01/2016, 13h16
  2. [WD-2003] boucle pour des tests de répétition
    Par Karatégirl77 dans le forum VBA Word
    Réponses: 11
    Dernier message: 06/07/2009, 12h41
  3. Réponses: 4
    Dernier message: 24/10/2007, 12h16
  4. setInterval pour Perl ?
    Par Girzi dans le forum Langage
    Réponses: 7
    Dernier message: 23/06/2006, 10h09
  5. Algo le plus rapide pour trouver une répétition ?
    Par AsmCode dans le forum Algorithmes et structures de données
    Réponses: 3
    Dernier message: 28/07/2005, 00h26

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