Précédent   Forum des professionnels en informatique > Webmasters - Développement Web > JavaScript
JavaScript Forum programmation JavaScript. Lire : Cours JavaScript, FAQ JavaScript, Toutes les FAQ JavaScript et Sources JavaScript
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 02/04/2011, 17h29   #1
Membre régulier
 
Avatar de Darkyl
 
Homme
autodidacte en recherche d'emploi
Inscription : novembre 2004
Messages : 259
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 26
Localisation : France, Haute Garonne (Midi Pyrénées)

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

Informations forums :
Inscription : novembre 2004
Messages : 259
Points : 99
Points : 99
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...


Citation:

<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...
__________________
Darkyl, celui qui conduit quand il boit pas .(faudra penser passer le permis )
Darkyl est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/04/2011, 17h57   #2
Membre régulier
 
Avatar de Darkyl
 
Homme
autodidacte en recherche d'emploi
Inscription : novembre 2004
Messages : 259
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 26
Localisation : France, Haute Garonne (Midi Pyrénées)

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

Informations forums :
Inscription : novembre 2004
Messages : 259
Points : 99
Points : 99
j'ai essayer ça :
Citation:
<script language="JavaScript" src="affichepagedansdiv.js">
var req=function(baticonstru.php,centre){ envoieRequete(); };

setInterval(req,1000);
</script>
sans résultat
__________________
Darkyl, celui qui conduit quand il boit pas .(faudra penser passer le permis )
Darkyl est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/04/2011, 18h00   #3
Membre expérimenté
 
Avatar de nadox
 
Homme
Développeur
Inscription : 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
Points : 545
Points : 545
Bonjour,

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

Code :
1
2
3
4
5
6
7
 
 
<script type="text/javascript" src="affichepagedansdiv.js">
 
setInterval(function() { envoieRequete("baticonstru.php",centre); },1000);
 
</script>
nadox est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/04/2011, 18h05   #4
Membre régulier
 
Avatar de Darkyl
 
Homme
autodidacte en recherche d'emploi
Inscription : novembre 2004
Messages : 259
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 26
Localisation : France, Haute Garonne (Midi Pyrénées)

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

Informations forums :
Inscription : novembre 2004
Messages : 259
Points : 99
Points : 99
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...
__________________
Darkyl, celui qui conduit quand il boit pas .(faudra penser passer le permis )
Darkyl est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/04/2011, 18h13   #5
Membre régulier
 
Avatar de Darkyl
 
Homme
autodidacte en recherche d'emploi
Inscription : novembre 2004
Messages : 259
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 26
Localisation : France, Haute Garonne (Midi Pyrénées)

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

Informations forums :
Inscription : novembre 2004
Messages : 259
Points : 99
Points : 99
j'ai trouvé ca sur le forum:
Citation:
<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:

Citation:
<ul id="la_zone_a_maj"></ul>
mais cela ne marche pas non plus, il me dit qu'il ne connait pas AJAX
__________________
Darkyl, celui qui conduit quand il boit pas .(faudra penser passer le permis )
Darkyl est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/04/2011, 18h17   #6
Membre expérimenté
 
Avatar de nadox
 
Homme
Développeur
Inscription : 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
Points : 545
Points : 545
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).
nadox est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/04/2011, 18h36   #7
Membre régulier
 
Avatar de Darkyl
 
Homme
autodidacte en recherche d'emploi
Inscription : novembre 2004
Messages : 259
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 26
Localisation : France, Haute Garonne (Midi Pyrénées)

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

Informations forums :
Inscription : novembre 2004
Messages : 259
Points : 99
Points : 99
bon, j'ai téléchargé le fichier prototype.js, et j'ai changé le code
Citation:
<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
Citation:
<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
__________________
Darkyl, celui qui conduit quand il boit pas .(faudra penser passer le permis )
Darkyl est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/04/2011, 18h53   #8
Membre expérimenté
 
Avatar de nadox
 
Homme
Développeur
Inscription : 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
Points : 545
Points : 545
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 :
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>
nadox est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/04/2011, 18h57   #9
Membre régulier
 
Avatar de Darkyl
 
Homme
autodidacte en recherche d'emploi
Inscription : novembre 2004
Messages : 259
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 26
Localisation : France, Haute Garonne (Midi Pyrénées)

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

Informations forums :
Inscription : novembre 2004
Messages : 259
Points : 99
Points : 99
j'ai suivi tes remarque,j'ai fait ca:
Citation:
<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?
__________________
Darkyl, celui qui conduit quand il boit pas .(faudra penser passer le permis )
Darkyl est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/04/2011, 19h01   #10
Membre régulier
 
Avatar de Darkyl
 
Homme
autodidacte en recherche d'emploi
Inscription : novembre 2004
Messages : 259
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 26
Localisation : France, Haute Garonne (Midi Pyrénées)

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

Informations forums :
Inscription : novembre 2004
Messages : 259
Points : 99
Points : 99
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é?
__________________
Darkyl, celui qui conduit quand il boit pas .(faudra penser passer le permis )
Darkyl est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/04/2011, 19h07   #11
Membre expérimenté
 
Avatar de nadox
 
Homme
Développeur
Inscription : 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
Points : 545
Points : 545
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 :
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.
nadox est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/04/2011, 19h15   #12
Membre régulier
 
Avatar de Darkyl
 
Homme
autodidacte en recherche d'emploi
Inscription : novembre 2004
Messages : 259
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 26
Localisation : France, Haute Garonne (Midi Pyrénées)

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

Informations forums :
Inscription : novembre 2004
Messages : 259
Points : 99
Points : 99
merci beaucoup nadox, je m'en vais tester tous ça. c'est résolu pour moi..
__________________
Darkyl, celui qui conduit quand il boit pas .(faudra penser passer le permis )
Darkyl est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 01h32.


 
 
 
 
Partenaires

Hébergement Web