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] Ajax : readyState bloqué à 1


Sujet :

AJAX

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Étudiant
    Inscrit en
    Avril 2009
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2009
    Messages : 21
    Par défaut [AJAX] Ajax : readyState bloqué à 1
    Bonjour,

    J'utilise AJAX pour mettre à jour une liste déroulante par rapport à une autre. Voici mon code :

    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
    <script type='text/javascript'>
     
    			function getXhr(){
                                    var xhr = null; 
    				if(window.XMLHttpRequest) // Firefox et autres
    				   xhr = new XMLHttpRequest(); 
    				else if(window.ActiveXObject){ // Internet Explorer 
    				   try {
    			                xhr = new ActiveXObject("Msxml2.XMLHTTP");
    			            } catch (e) {
    			                xhr = new ActiveXObject("Microsoft.XMLHTTP");
    			            }
    				}
    				else { // XMLHttpRequest non support par le navigateur 
    				   alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest..."); 
    				   xhr = false; 
    				} 
                                    return xhr;
    			}
     
    			function go(){
    				var xhr = getXhr();
    				xhr.onreadystatechange = function(){
    					alert(xhr.readyState);
    					if(xhr.readyState == 4 && xhr.status == 200){
    						leselect = xhr.responseText;
    						document.getElementById('LesModeles').innerHTML = leselect;
    					}
    				}
    				xhr.open("POST","ajoutModeleListMarque.php",true);
    				xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
    				sel = document.getElementById('LaMarque');
    				idmarque = sel.options[sel.selectedIndex].value;
    				xhr.send("idMarque="+idmarque);
    			}
    		</script>

    Le problème c'est que mon alert(xhr.readyState); reste à 1 et ne passe jamais à 4.
    Quelqu'un aurait une idée ?

    Merci d'avance !!

  2. #2
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Par défaut
    Bonjour,

    Comme tu travaille en mode asynchrone, avant que tu cliques sur le bouton "OK" de l'alert, ton readyState passe déjà à autre valeur, c'est normale que tu ne vois pas le changement.
    Peut tu nous dire ce qui ce passe? Ton bout de code HTML généré?

    A+.

  3. #3
    Membre averti
    Profil pro
    Étudiant
    Inscrit en
    Avril 2009
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2009
    Messages : 21
    Par défaut
    Voici le code qui doit s'afficher dans la div mise à jour après le choix de la première liste déroulante :

    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
    <?php
      	$racine = "".$_SERVER['DOCUMENT_ROOT']."/";
      	require_once("$racine"."includes.php");
     
      session_start();
    	if(isset($_POST["idMarque"])){
    		$id = $_POST["idMarque"];
            $db = new Req_Voiture();
            $modeles = $db -> getListeModele($id);
            $UnModele = mysql_fetch_array ($modeles);
            while ($UnModele)																																				
            {	
    			$id = $UnModele['id_modele'];
    			$nom = $UnModele['nom_modele'];
    			echo "<tr><td>".$nom."</td><td style=\"text-align:left\">
    			<a href=\"../act/act_supprModele.php?num=".$id."\"><img src=\"../../../Images/icone/delete.gif\" /></a></td></tr>";
    			$UnModele = mysql_fetch_array ($modeles);
            };
    	};
    ?>
    Et l'appel à la fonction go() se trouve comme ceci :

    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
    <div id="LaMarque">
              <?php                                                   require_once("$racine"."fct/fct_listes.js");
    $db = new Req_Voiture();
    $marques = $db -> getListeMarque();
    $UneMarque = mysql_fetch_array ($marques);
    echo "<select id=\"LaMarque\" name=\"LaMarque\" style=\"width:80%\" onchange=\"go();\">";
    echo "<option value=\"-1\">--- Marque ---</option>";
    while ($UneMarque)                                                                                                                                                                                                                                                                                              
    {       
    $value = $UneMarque['id_marque'];
    $texte = $UneMarque['nom_marque'];
    echo "<option value=\"$value\">$texte</option>";
    $UneMarque = mysql_fetch_array ($marques);
    }
    echo "</select>";
    ?>
                                    </div>

  4. #4
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Par défaut
    Je parle du code HTML généré à partir du php mais pas ton php .

    Sinon un id doit-être unique dans un document.

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     $modeles = $db -> getListeModele($id);
            while ( $UnModele = mysql_fetch_array ($modeles);)

    A+

Discussions similaires

  1. Réponses: 8
    Dernier message: 19/05/2009, 17h04
  2. [AJAX] readyState bloque à 3
    Par cocoyot dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 14/10/2008, 09h58
  3. [AJAX] readyState bloque à 1
    Par dubitoph dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 11/09/2008, 09h39
  4. [AJAX] http.readyState différent de 4 ?
    Par samtheh dans le forum Général JavaScript
    Réponses: 12
    Dernier message: 29/09/2007, 12h31
  5. [AJAX] AJAX+Firefox : readyState ne dépasse pas le 1
    Par TheRedLed dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 13/04/2007, 13h42

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