Précédent   Forum des professionnels en informatique > Webmasters - Développement Web > AJAX
AJAX Forum sur la programmation AJAX. Avant de poster : Cours AJAX, FAQ AJAX, Toutes les FAQ JavaScript
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 06/02/2011, 13h06   #1
Invité régulier
 
Étudiant
Inscription : avril 2009
Messages : 21
Détails du profil
Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : avril 2009
Messages : 21
Points : 6
Points : 6
Par défaut Ajax : readyState bloqué à 1

Bonjour,

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

Code :
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 !!
nynnie7 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/02/2011, 13h26   #2
Rédacteur/Modérateur
 
Avatar de andry.aime
 
Homme Andry Aimé
Inscription : septembre 2007
Messages : 5 126
Détails du profil
Informations personnelles :
Nom : Homme Andry Aimé
Localisation : Ile Maurice

Informations forums :
Inscription : septembre 2007
Messages : 5 126
Points : 7 270
Points : 7 270
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+.
andry.aime est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/02/2011, 13h33   #3
Invité régulier
 
Étudiant
Inscription : avril 2009
Messages : 21
Détails du profil
Informations professionnelles :
Activité : Étudiant

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

Code :
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 :
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>
nynnie7 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/02/2011, 13h46   #4
Rédacteur/Modérateur
 
Avatar de andry.aime
 
Homme Andry Aimé
Inscription : septembre 2007
Messages : 5 126
Détails du profil
Informations personnelles :
Nom : Homme Andry Aimé
Localisation : Ile Maurice

Informations forums :
Inscription : septembre 2007
Messages : 5 126
Points : 7 270
Points : 7 270
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 :
1
2
 $modeles = $db -> getListeModele($id);
        while ( $UnModele = mysql_fetch_array ($modeles);)

A+
andry.aime est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 08h41.


 
 
 
 
Partenaires

Hébergement Web