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

AJAX Discussion :

[AJAX] script très simple qui fait planter mon navigateur


Sujet :

AJAX

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    450
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 450
    Points : 123
    Points
    123
    Par défaut [AJAX] script très simple qui fait planter mon navigateur
    Bonjour à tous, je suis débutant en ajax, et comme tout bon débutant, j'ai donc essayé de créer un chat, et la j'ai un probleme : mon script qui récupère la boucle dans le fichier php renvoie bien les données dans le div souhaité, la div est bien rechargée toutes les x secondes, mais le problème, c'est qu'au bout de quelques petites minutes, sa fait planter mon navigateur que je suis obligé de fermer et relancer, sinon tout bloque

    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
    77
    78
    79
    80
    81
    82
    83
    84
    85
     
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
    <title>Untitled Document</title>
    <script type="text/javascript">
    function getxhr()
    	{
    	var xhr = null;
    	if (window.XMLHttpRequest || window.ActiveXObject) 
    		{
    		if (window.ActiveXObject) 
    			{
    			try 
    				{
    				xhr = new ActiveXObject("Msxml2.XMLHTTP");
    				} 
    			catch(e) 
    				{
    				xhr = new ActiveXObject("Microsoft.XMLHTTP");
    				}
    			} 
    		else 
    			{
    			xhr = new XMLHttpRequest(); 
    			}
    		} 
    	else 
    		{
    		alert("Votre navigateur ne supporte pas l'objet XMLHTTPRequest...");
    		return null;
    		}
    	return xhr;
    	}
     
    function recupe()
    	{
    	var xhr = getxhr();
     
    	xhr.onreadystatechange = function() {
    		if (xhr.readyState == 4) {
    			var reponse = xhr.responseText;
                document.getElementById("chat").innerHTML = reponse;
     
    		}
    		setTimeout(recupe,5000);
    	};
    	xhr.open("POST", "recupe.php", true);
    	xhr.send(null);
     
    	}
     
    function envoi()
    	{
    	var xhr = getxhr();
    	xhr.onreadystatechange = function() 
    		{
    		if (xhr.readyState == 4 && xhr.status == 200) 
    			{
    			document.getElementById("status").innerHTML=xhr.responseText;
    			}
    		};
     	var requete="pseudo="+document.getElementById("pseudo").value+"&message="+document.getElementById("message").value+"&envoi="+document.getElementById("envoi").value;
    	xhr.open("POST", "envoi.php", true);
    	xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
    	xhr.send(requete);
    	}
     
    </script>
    </head>
     
    <body onLoad="recupe()">
    <div>
    <div id="status" style="border:1px solid#cccccc;width:200px;height:20px;"></div>
    <div id="chat"></div>
    </div>
     
    <div id="form">
    <input type="text" name="pseudo" id="pseudo" maxlength="20" />
    <input type="text" name="message" id="message" size="200" maxlength="300" />
    <input type="submit" name="envoi" id="envoi" value="Envoyer" onClick="envoi()" />
    </div>
    </body>
    </html>

  2. #2
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Points : 91 220
    Points
    91 220
    Billets dans le blog
    20
    Par défaut
    C'est quoi cette fonction flush() ?

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    450
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 450
    Points : 123
    Points
    123
    Par défaut
    lol, non laisse tomber ca, fais comme si t'avais rien vu, mon problème est omniprésent avec ou sans ce truc

    Sinon, je précise que je travail en local pour ce test, peut être que ce détail aurait son importance ?

  4. #4
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Points : 91 220
    Points
    91 220
    Billets dans le blog
    20
    Par défaut
    Citation Envoyé par cuisto44000
    lol, non laisse tomber ca, fais comme si t'avais rien vu, mon problème est omniprésent avec ou sans ce truc
    Si tu veux... mais si tu fais allusion aux équivalents PHP par exemple, non seulement ça n'existe pas en JavaScript, mais ça n'aurait aucun sens
    Citation Envoyé par cuisto44000
    Sinon, je précise que je travail en local pour ce test, peut être que ce détail aurait son importance ?
    Oui, ça peut en avoir. Tu testes avec un serveur (Wamp ou Xamp par exemple) ?

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    450
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 450
    Points : 123
    Points
    123
    Par défaut
    oui, sur wamp

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    450
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 450
    Points : 123
    Points
    123
    Par défaut
    je viens d'essayer sous IE (je suis sous FF d'habitude) et sa plante pareil, voir pire ...
    De plus, j'ai constaté que des que sa commence a planter, y'a un bruit dans mon unité centrale, comme un truc qui tournerait vite (euh ... le disque dur si je ne m'abuse) ...

    EDIT : de toute façons, y'a que le setTimeout(recupe,1000); qui peut faire ce genre de plantage ... mais alors que faire, sa m'empeche de progresser ce truc la .

    Dernier test, je viens d'essayer de mettre sur un de mes noms de domaine les codes, avec juste des valeurs retournées genre echo 'ok'; , puis je les changeais de temps en temps :

    Le changement se faisait immédiatement dans la div chat, mais le navigateur finissait tout de même par planter .

    Au fait, je me poses ces questions :

    *Que fait reellement setTimeout(); quel est son role ?
    *N'y'a t'il pas un autre moyen pour recharger un div que de passer par setTimeout(); ou setInterval(); ? enfin tout en faisant en sorte que sa se recharge automatiquement et non manuellement biensure

    Voila ou j'en suis dans ma tête ...

    Merci par avance pour vos réponses précieuses .

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    450
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 450
    Points : 123
    Points
    123
    Par défaut
    J'ai réfléchi et je penses que soit ma fonction est mal structurée, soit le settimeout est mal placé, ou les deux, qu'en pensez vous?

Discussions similaires

  1. [10g] Le close_form fait planter mon navigateur
    Par mich34 dans le forum Forms
    Réponses: 3
    Dernier message: 19/02/2014, 17h13
  2. [Prototype] Parsing qui fait planter le navigateur
    Par sliderman dans le forum Bibliothèques & Frameworks
    Réponses: 0
    Dernier message: 29/04/2010, 12h30
  3. [AJAX] Script qui fait planter IE6
    Par bassimgouzi dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 15/08/2008, 19h19
  4. comment trouver ce qui fait planter mon VS ?
    Par gorgonite dans le forum Visual Studio Team System
    Réponses: 3
    Dernier message: 03/06/2008, 23h40
  5. upload qui fait planter le navigateur
    Par Sheriff dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 11/12/2006, 13h19

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