|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||
|
Membre éclairé
![]() Développeur Sharepoint/Biztalk Inscription : octobre 2008 Messages : 500 ![]() |
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 :
<body onLoad="javascript:setTimeout('getNouveauxTotaux()',2000);"> Code :
<body onLoad="window.setTimeout('getNouveauxTotaux()',2000);"> Code :
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 ! |
||
|
|
00
|
|
|
#2 |
|
Membre éclairé
![]() Développeur Sharepoint/Biztalk Inscription : octobre 2008 Messages : 500 ![]() |
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 ? |
|
|
00
|
|
|
#3 |
![]() ![]() Marc ChappuisDéveloppeur Web Inscription : décembre 2003 Messages : 1 535 ![]() |
Salut,
c'est setInterval qui fait des appels récurrents, setTimeout ne lance qu'un appel.
__________________
Si ton code fait plus d'une ligne, c'est que tu as mal choisi ton langage ! |
|
|
00
|
|
|
#4 | ||
![]() ![]() Andry Aimé Inscription : septembre 2007 Messages : 5 126 ![]() |
Sinon, tu peux aussi faire:
Code :
|
||
|
|
00
|
|
|
#5 |
![]() ![]() Marc ChappuisDéveloppeur Web Inscription : décembre 2003 Messages : 1 535 ![]() |
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.
__________________
Si ton code fait plus d'une ligne, c'est que tu as mal choisi ton langage ! |
|
|
00
|
|
|
#6 |
![]() ![]() Andry Aimé Inscription : septembre 2007 Messages : 5 126 ![]() |
Le readyState sera à 4 mais seulement le status ne sera pas à 200.
|
|
|
00
|
|
|
#7 |
![]() ![]() Marc ChappuisDéveloppeur Web Inscription : décembre 2003 Messages : 1 535 ![]() |
Je ne pense pas non, le readystate est fixé à 4 quand une réponse
revient du serveur. Si le serveur réponds pas du tout je doute fort que cela soit le cas. EDIT: Voici une gestion de timeout ici
__________________
Si ton code fait plus d'une ligne, c'est que tu as mal choisi ton langage ! |
|
|
00
|
|
|
#8 |
![]() ![]() Andry Aimé Inscription : septembre 2007 Messages : 5 126 ![]() |
|
|
|
00
|
|
|
#9 |
![]() ![]() Marc ChappuisDéveloppeur Web Inscription : décembre 2003 Messages : 1 535 ![]() |
Peux tu détailler ton test que je reproduise stp ?
__________________
Si ton code fait plus d'une ligne, c'est que tu as mal choisi ton langage ! |
|
|
00
|
|
|
#10 |
![]() ![]() Andry Aimé Inscription : septembre 2007 Messages : 5 126 ![]() |
![]() Premier test, J'ai créé un fichier php avec quelque echo et un sleep pour faire un peu durée la requête, pendant l’exécution du fichier php suite à la requête Ajax, j'arrête apache au bon milieu. le readyState passe à 4 après quelque temps mais le status n'est pas à 200. Deuxième test, J'appelle tous simplement un hote qui n'existe pas, au bout de certains temps, le readyState passe à 4 mais le status n'est pas à 200. A+. |
|
|
00
|
|
|
#11 |
![]() ![]() Marc ChappuisDéveloppeur Web Inscription : décembre 2003 Messages : 1 535 ![]() |
Merci, tu peux poster le code que je test chez moi ?
__________________
Si ton code fait plus d'une ligne, c'est que tu as mal choisi ton langage ! |
|
|
00
|
|
|
#12 | ||||
![]() ![]() Andry Aimé Inscription : septembre 2007 Messages : 5 126 ![]() |
![]() Code :
Code php :
A+. |
||||
|
|
00
|
|
|
#13 |
![]() ![]() Marc ChappuisDéveloppeur Web Inscription : décembre 2003 Messages : 1 535 ![]() |
Salut,
Merci pour ton code je viens de m'amuser à tester ce que tu as fais et j'observe en effet que lorsque je kill le process apache ou que je stop apache normalement, la requête abouti à un ready state 4 et le contenu partiel avant le sleep est affiché. Cependant d'une point de vue TCP/IP (sans être un spécialiste) ce n'est pas pareil à une coupure réseau. On a une connexion fermée ou qqch comme ça. Je te propose de faire le test suivant depuis chez toi: 1) tu lance ta requête ajax sur ton code php (toujours avec sleep 60) 2) tu attends 5 secondes environ 3) tu retire le câble réseau de ton PC 4) tu attends 2 minutes 5) tu le rebranche Et là, on passe pas en ready state 4, c'est "pending" depuis 15 minutes chez moi, je vais voir si j'ai la patience d'attendre encore C'est pour palier à ce cas de figure que je proposais d'utiliser setInterval au lieu de setTimeout. Cependant ma proposition risque d'induire un autre problème: Le nombre de requêtes xhr simultanées vers un même serveur est limité par le navigateur (par exemple pour FireFox voir la note en jaune) Donc si le réseau a plusieurs coupures on risque d'arriver à cette limite en rouvrant des requêtes avec setInterval. Qu'en pensez-vous ?
__________________
Si ton code fait plus d'une ligne, c'est que tu as mal choisi ton langage ! |
|
|
00
|
|
|
#14 |
![]() ![]() Marc ChappuisDéveloppeur Web Inscription : décembre 2003 Messages : 1 535 ![]() |
J'ai eu un ready state 4 après env. 45 minutes sur FireFox avec un status = 0
prévois de faire ton test avant le souper :-)
__________________
Si ton code fait plus d'une ligne, c'est que tu as mal choisi ton langage ! |
|
|
00
|
|
|
#15 | |||
![]() ![]() Andry Aimé Inscription : septembre 2007 Messages : 5 126 ![]() |
Citation:
ensuite Code :
Je ferai le test quand j'aurai un peu de temps. Merci pour tes résultats. A+. |
|||
|
|
00
|
|
|
#16 | ||
![]() ![]() Andry Aimé Inscription : septembre 2007 Messages : 5 126 ![]() |
Petite correction,
Code :
A+. |
||
|
|
00
|
Copyright © 2000-2012 - www.developpez.com