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 :

[AJAX] AJAX, timer et boucle while


Sujet :

JavaScript

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    21
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Bas Rhin (Alsace)

    Informations forums :
    Inscription : Novembre 2005
    Messages : 21
    Points : 13
    Points
    13
    Par défaut [AJAX] AJAX, timer et boucle while
    Bonjour,

    Le but de mon script est de vérifier le contenu d'un champ dans une base de données à interval régulié (3 secondes par exemple).

    Etant donné qu'il n'existe aucune fonction "sleep" en javascript (qui ne freeze pas le navigateur), j'utilise la fonction "sleep" dans le php appelé par l'ajax.

    Le problème vient du fait que je boucle sur l'ajax, donc, soit je reste en synchrone, et le navigateur freeze jusqu'a qu'on sorte de la boucle (on sort de la boucle lorsque le PHP retourne 1).
    Si je passe en asynchrone, je suppose qu'il recommence a boucler avant même que la réponse soit reçue et ca ne fonctionne pas.

    Voici une partie du code javascript pour que ce soit plus clair :

    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
     
     
    if(window.XMLHttpRequest) // FIREFOX
    	xhr_object = new XMLHttpRequest();
    else if(window.ActiveXObject) // IE
    	xhr_object = new ActiveXObject("Microsoft.XMLHTTP");
    else
    return(false);	
     
    do
    {
    	xhr_object.open("GET", "ajax.php?attendre=1&nom=" + game + "&joueur=" + joueur, true);
    	xhr_object.send(null);
    	if(xhr_object.readyState == 4)
    	{
    		retour = xhr_object.responseText;
    	}
    } while (retour == 0);
    J'espère avoir été compréhensible.

  2. #2
    Membre expert
    Avatar de FremyCompany
    Profil pro
    Étudiant
    Inscrit en
    Février 2006
    Messages
    2 532
    Détails du profil
    Informations personnelles :
    Âge : 32
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2006
    Messages : 2 532
    Points : 3 239
    Points
    3 239
    Fremy
    Pour vos développements Web et une navigation agréable, le tout gratuit :
    1) IE 8 + IE7Pro (Si vous ne connaissez pas IE7Pro, essayez !)
    2) FF 3 + Web Developper Toolbar + AdBlockPlus + FireBug + GreaseMonkey

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    21
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Bas Rhin (Alsace)

    Informations forums :
    Inscription : Novembre 2005
    Messages : 21
    Points : 13
    Points
    13
    Par défaut
    Etant donnée que tu es en synchrone, pendant le sleep du langage serveur, le navigateur freeze quand même.. je ne comprend pas vraiment l'intéret de ton bou de code.
    Cependant je l'ai peut-être mal compris/utilisé...
    Si tu pouvais completer, ca serait cool

  4. #4
    Membre expert
    Avatar de FremyCompany
    Profil pro
    Étudiant
    Inscrit en
    Février 2006
    Messages
    2 532
    Détails du profil
    Informations personnelles :
    Âge : 32
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2006
    Messages : 2 532
    Points : 3 239
    Points
    3 239
    Par défaut
    Citation Envoyé par podidoo
    Etant donnée que tu es en synchrone, pendant le sleep du langage serveur, le navigateur freeze quand même.. je ne comprend pas vraiment l'intéret de ton bou de code.
    Cependant je l'ai peut-être mal compris/utilisé...
    Si tu pouvais completer, ca serait cool
    Euh, ben c'est pour un truc du genre

    // ....
    // La faut attendre un peu sans user le CPU
    while (...) {
    sleep(500);
    }
    // ....
    Fremy
    Pour vos développements Web et une navigation agréable, le tout gratuit :
    1) IE 8 + IE7Pro (Si vous ne connaissez pas IE7Pro, essayez !)
    2) FF 3 + Web Developper Toolbar + AdBlockPlus + FireBug + GreaseMonkey

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    21
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Bas Rhin (Alsace)

    Informations forums :
    Inscription : Novembre 2005
    Messages : 21
    Points : 13
    Points
    13
    Par défaut
    Justement.. lorsque ton script "sleep" il freeze le navigateur, impossible de clic-droit ou d'aller sur un autre onglet (pour firefox).

    Moi, ce qu'il me faut, c'est que mon script vérifie le contenu de mon champs en base de donnés (par l'intermédiaire de xhr) toutes les X secondes en permanance (ou presque), donc avec ta méthode, mon navigateur reste figé (plante?).. et c'est tout..

    Personne n'a une idée ?

  6. #6
    Membre expert
    Avatar de FremyCompany
    Profil pro
    Étudiant
    Inscrit en
    Février 2006
    Messages
    2 532
    Détails du profil
    Informations personnelles :
    Âge : 32
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2006
    Messages : 2 532
    Points : 3 239
    Points
    3 239
    Par défaut
    Citation Envoyé par podidoo
    Justement.. lorsque ton script "sleep" il freeze le navigateur, impossible de clic-droit ou d'aller sur un autre onglet (pour firefox).

    Moi, ce qu'il me faut, c'est que mon script vérifie le contenu de mon champs en base de donnés (par l'intermédiaire de xhr) toutes les X secondes en permanance (ou presque), donc avec ta méthode, mon navigateur reste figé (plante?).. et c'est tout..

    Personne n'a une idée ?
    Et mais dans ce cas faut utiliser setTimeout et setInterval...
    Fremy
    Pour vos développements Web et une navigation agréable, le tout gratuit :
    1) IE 8 + IE7Pro (Si vous ne connaissez pas IE7Pro, essayez !)
    2) FF 3 + Web Developper Toolbar + AdBlockPlus + FireBug + GreaseMonkey

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    21
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Bas Rhin (Alsace)

    Informations forums :
    Inscription : Novembre 2005
    Messages : 21
    Points : 13
    Points
    13
    Par défaut
    Ok merci, je vais tenter avec ca.

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

Discussions similaires

  1. Ajax dans une boucle while , navigateur crash ?
    Par welcsk dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 27/10/2016, 15h51
  2. [Python 3.X] Sauter des instructions dans une boucle while sur timer
    Par seb06570 dans le forum Général Python
    Réponses: 2
    Dernier message: 22/10/2015, 09h39
  3. Boucle While et Timer
    Par Ninpa dans le forum VB.NET
    Réponses: 4
    Dernier message: 12/06/2014, 12h10
  4. [AJAX] Boucle while avec ajax
    Par minipopov dans le forum jQuery
    Réponses: 3
    Dernier message: 21/10/2012, 19h54
  5. Réponses: 1
    Dernier message: 14/04/2012, 11h31

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