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 :

XMLHttpRequest / readyState ne passe jamais à 4


Sujet :

JavaScript

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2007
    Messages
    25
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 25
    Points : 17
    Points
    17
    Par défaut XMLHttpRequest / readyState ne passe jamais à 4
    Bonjour,

    Voici mon problème :
    J'essaye de mettre en place un script permettant de mettre à jour une base de données dans un intervalle régulier.
    J'utilise donc setInterval et XMLHttpRequest.
    J'ai un fichier parallèle en php avec ma requête de mise à jour;
    Le problème est que le readyState est bloqué à 2, donc la requête ne s'effectue jamais...
    Si quelqu'un peut m'aider !

    Mon script :

    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
     
    <script language="javascript">
    	function Timer() {
    	        if(window.XMLHttpRequest) // FIREFOX
    	             xhr_object = new XMLHttpRequest();
    		else if(window.ActiveXObject) // IE
    		     xhr_object = new ActiveXObject("Microsoft.XMLHTTP");
    		else
    		     return(false);
    		xhr_object.open("GET", "update_dateLastConnexion.php", true);
    		xhr_object.setRequestHeader('Content-Type','application/x-www-form-*urlencoded');
    		xhr_object.send(null);
    		xhr_object.onreadystatechange = function() { 
    		if(xhr_object.readyState == 4) 
    			eval(xhr_object.responseText); 
    		else if (xhr_object.readyState == 1) {
    		    alert("1"); }
    		else if (xhr_object.readyState == 2) {
    		    alert('2');}
    		else {alert('3');}
    		} 
    	}
    	function demarrer() {
    		Timer();
    		setInterval("Timer()", 180000);
    	}
    </script>
    Ma page php
    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
     
    <?php
     
    if (isset($_SESSION['pseudo'])) {
    	$pseudoMembre = $_SESSION['pseudo']; 
    	require "BDD.php";
     
    	// Vérifie que l'utilisateur est connecté
    	if ($prive==1){
    		// MISE A JOUR DE LA DATE DE DERNIERE CONNEXION
    		$q_last_connexion = "UPDATE Membre SET dateLastConnexion = NOW() WHERE pseudoMembre = '$pseudoMembre';";
    		$r_last_connexion = mysql_query($q_last_connexion);
    	} else {}
    	mysql_close();
    }
    ?>

  2. #2
    Membre éprouvé
    Avatar de beegees
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2004
    Messages
    3 610
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2004
    Messages : 3 610
    Points : 1 277
    Points
    1 277
    Par défaut
    Salut,

    Je dirais sans trop lire ton code qu'il ne trouve simplement pas ton fichier .php.

    Je travaille en AJAX aussi pour l'instant, j'ai rencontré ce genre de problème.

    Mets une alerte à l'entrée de ton code javascript pour voir si il atteint l'alerte :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    	echo'<script LANGUAGE="JavaScript">alert("ici");</SCRIPT>';
    si ici s'affiche, c'est que tu arrive dans ton fichier php.

    je te conseille aussi de poster dans le forum AJAX.

    Dis moi quoi.

    beegees

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2007
    Messages
    25
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 25
    Points : 17
    Points
    17
    Par défaut
    Merci pour ta réponse !

    J'ai modifié pas mal de trucs et maintenant ça fonctionne bien;

    Par contre je vais rester dans le forum Javascript car j'ai une question concernant le setInterval :
    est-ce qu'il se réinitialise à chaque rechargement de page ou pas?

    Voici mon code après les modifs :

    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
     
    <?php
                            if (isset($_SESSION['pseudo']) AND $prive==1) {
                    ?>
    		<script language="javascript">
    			function Timer() {
    				if(window.XMLHttpRequest) // FIREFOX
    				xhr_object = new XMLHttpRequest();
    				else if(window.ActiveXObject) // IE
    				xhr_object = new ActiveXObject("Microsoft.XMLHTTP");
    				else
    				return(false);
    				xhr_object.open("POST", "update_dateLastConnexion.php", true);
    				xhr_object.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
    				xhr_object.send("pseudo=<?=$_SESSION['pseudo'];?>");
    				xhr_object.onreadystatechange = function() { 
    				if(xhr_object.readyState == 4) 
    					{ eval(xhr_object.responseText);}
    				} 
    		   }
    			function demarrer() {
    				Timer();
    				setInterval("Timer()", 180000);
    			}
    			demarrer();
    		</script>
    		<?php
                    } else { }
                    ?>
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    <?php
            $pseudoMembre = $_POST['pseudo']; 
            require "BDD.php";
            
            // MISE A JOUR DE LA DATE DE DERNIERE CONNEXION
            $q_last_connexion = "UPDATE Membre SET dateLastConnexion = NOW() WHERE pseudoMembre = '$pseudoMembre';";
            $r_last_connexion = mysql_query($q_last_connexion);
            
            mysql_close();
    ?>

Discussions similaires

  1. [AJAX] readyState jamais égale à 4
    Par blastafarie dans le forum AJAX
    Réponses: 4
    Dernier message: 01/10/2009, 00h05
  2. onException on passe jamais dedans
    Par serj' dans le forum Tapestry
    Réponses: 2
    Dernier message: 21/01/2009, 14h57
  3. [AJAX] readyState passe de 1 à 4 : Probleme Connu ?
    Par raoulchatigre dans le forum Général JavaScript
    Réponses: 24
    Dernier message: 29/08/2006, 12h39
  4. [xmlHTTPrequest] propriété readyState tjrs a 1
    Par luta dans le forum Général JavaScript
    Réponses: 10
    Dernier message: 27/06/2006, 11h03
  5. [SAX] progamme sui ne passe jamais dans endElement
    Par cocula dans le forum Format d'échange (XML, JSON...)
    Réponses: 2
    Dernier message: 26/04/2005, 09h37

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