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 :

Comportement étrange XMLHttpRequest


Sujet :

JavaScript

  1. #1
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Octobre 2007
    Messages
    64
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2007
    Messages : 64
    Points : 40
    Points
    40
    Par défaut Comportement étrange XMLHttpRequest
    Bonjour,
    J'ai actuellement un problème avec une fonction qui marche sur plusieurs pages et qui ne fonctionne pas sur une autre (que sous IE).

    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
     
    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... Utilisez une version plus récente."); 
    		xhr = false; 
    	} 
    	return xhr;
    	}
     
    function go(param){
    	var xhr = getXhr();
    	var sel = document.getElementById(param);
    	// On défini ce qu'on va faire quand on aura la réponse
    	xhr.onreadystatechange = function(){
    		// On ne fait quelque chose que si on a tout reçu et que le serveur est ok
    		if(xhr.readyState == 4 && xhr.status == 200){
    			leselect = xhr.responseText;
    			// On se sert de innerHTML pour rajouter les options a la liste
    			if (param == 'region_select'){
    				document.getElementById('div_centre').innerHTML = leselect;
    			}
    			else if(param == 'groupe_select'){
    				document.getElementById('div_centre').innerHTML = "";
    				document.getElementById('div_region').innerHTML = leselect;
    			}
    		}
    	}
     
    	// Ici on va voir comment faire du post
    	xhr.open("POST","ajaxRegion.php",true);
    	// ne pas oublier ça pour le post
    	xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
    	// ne pas oublier de poster les arguments
    	// ici, le groupe
    	if (param == 'region_select'){
     
    		var postgroup = document.getElementById('groupe_select');
    		region = sel.options[sel.selectedIndex].value;
    		groupe = postgroup.options[postgroup.selectedIndex].value;
    		xhr.send("region="+region+"&postgroup="+groupe);
    	}
    	else if(param == 'groupe_select'){
    		groupe = sel.options[sel.selectedIndex].value;
    		xhr.send("groupe="+groupe);
    	}
     
    }
    Lorsque je change la valeur de ma lisbox, IE m'affiche un message d'erreur : "Cet objet ne gère pas cette propriété ou cette méthode" en pointant cette ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    xhr.send("groupe="+groupe);
    Je tiens à preciser que xhr.readyState n'atteint jamais 4.

    Pour info la page html :

    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
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    	<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
    	<title>Test</title>
    	<link href="style_sans_login.css" rel="stylesheet" type="text/css" />
    	<script language="Javascript" src="script.js"></script>
    </head>
    <body>
    <div id="content">
    	<div id="main">
    		<div class="post">
    			<div>
    				<div style="float : left;">
    				<br/><br/><table class="table_no_brodure">
    				<tr>
    					<td class="table_no_brodure">Groupe : </td>
    					<td class="table_no_brodure">
    						<select name="groupe" id="groupe_select" onChange="go('groupe_select');">
    						<option value="">Aucun</option>
     
    						<option value="1">1</option><option value="2">2</option>						</select>
    					</td>
    				</tr>
    				<tr>
    					<td class="table_no_brodure">R&eacute;gion :</td>
    					<td class="table_no_brodure">
    						<div id="div_region">
    						</div>
    					</td>
    				</tr>
    				<tr>
    					<td class="table_no_brodure">Centre : </td>
    					<td class="table_no_brodure">
    						<div id="div_centre">
    						</div>
    					</td>
    				</tr>
    					</table>
    					<br/><br/><br/><a href="ajout_modif.php">Retour</a><br/><br/>
    										<br/><br/><br/><br/>
     
    				</div>
     
    			</div>
    		</div>
    	</div>
    </div>
    <div id="footer"></div>
    </body>
    </html>
    Comme la fonction marche impeccablement sur d'autres pages, je ne pense pas que le problème vienne de là ...

    Merci d'avance de m'éclairer.

  2. #2
    Expert éminent sénior

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    13 474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2007
    Messages : 13 474
    Points : 36 571
    Points
    36 571
    Par défaut
    Bonjour,
    Citation Envoyé par nolev3 Voir le message
    Comme la fonction marche impeccablement sur d'autres pages,
    avec les même objets <select> et les mêmes fonctions Ajax ?
    Ou s'agit-il d'autres fonctionnements basés sur Ajax ?

    A+

  3. #3
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Octobre 2007
    Messages
    64
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2007
    Messages : 64
    Points : 40
    Points
    40
    Par défaut
    Oui les mêmes <select> avec les mêmes fonction AJAX.
    Et je ne vois pas le problème ...

  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
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    groupe = sel.options[sel.selectedIndex].value;
    et
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <select name="groupe" id="groupe_select" onChange="go('groupe_select');">
    Vu que groupe n'a pas été déclaré comme variable dans ton script, il se peut en effet que IE croie qu'il s'agit de l'élément dont le name est groupe...

  5. #5
    Expert éminent sénior

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    13 474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2007
    Messages : 13 474
    Points : 36 571
    Points
    36 571
    Par défaut
    Citation Envoyé par Bovino Voir le message
    Vu que groupe n'a pas été déclaré comme variable dans ton script, il se peut en effet que IE croie qu'il s'agit de l'élément dont le name est groupe...
    +1

    =>
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <select name="groupe" id="groupe_select" onChange="go('groupe_select');">
    +
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var le_groupe = sel.options[sel.selectedIndex].value;
    EDIT : ceci dit, ça serait aussi le cas dans les autres pages

    A+

  6. #6
    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 E.Bzz Voir le message
    EDIT : ceci dit, ça serait aussi le cas dans les autres pages

    A+
    Sauf si c'est précisément ça qui change des autres pages... Car si les pages sont strictement identiques, la solution devient la même que pour IE qui boucle sur ses propriétés !
    Citation Envoyé par le_chomeur
    j'ai trouvé !! ça doit avoir un rapport avec ça =>
    http://www.odenis.com/wp-content/upl...cropcircle.jpg

  7. #7
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Octobre 2007
    Messages
    64
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2007
    Messages : 64
    Points : 40
    Points
    40
    Par défaut
    Les name des balises ne changent pas d'une page à l'autre.
    Donc le problème ne peut pas venir de là

  8. #8
    Expert éminent sénior

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    13 474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2007
    Messages : 13 474
    Points : 36 571
    Points
    36 571
    Par défaut
    Citation Envoyé par nolev3 Voir le message
    Donc le problème ne peut pas venir de là
    Au lieu de tirer des conclusions prématurées, mieux vaudrait analyser les différences entre tes pages qui fonctionnent et celles qui ne fonctionnent pas.

    Après, tu pourras dire "ça ne venait pas de là" ... ou pas

  9. #9
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Octobre 2007
    Messages
    64
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2007
    Messages : 64
    Points : 40
    Points
    40
    Par défaut
    J'ai passé mon après midi dessus et je n'ai rien trouvé.
    Donc je ne pense pas que ce soient des conclusions prématurées comme tu dis

  10. #10
    Expert éminent sénior

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    13 474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2007
    Messages : 13 474
    Points : 36 571
    Points
    36 571
    Par défaut
    Citation Envoyé par nolev3 Voir le message
    J'ai passé mon après midi dessus et je n'ai rien trouvé.
    Donc je ne pense pas que ce soient des conclusions prématurées comme tu dis
    Ca ne dépend pas du temps qu'on y a passé : tant que tu ne trouves pas d'où ça vient, tu ne peux pas savoir d'où "ça ne vient pas"

    Tu as essayé de renommer (et déclarer) la variable "groupe" ?
    Pourquoi laisser le name alors que tu n'as pas de <form> ? => enlève le.
    Le code de ta page est complet ?
    Pas d'erreur dans script.js (si pas présent dans les autres pages) ?

    On peut voir une page qui fonctionne ?

    A+

  11. #11
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Octobre 2007
    Messages
    64
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2007
    Messages : 64
    Points : 40
    Points
    40
    Par défaut
    Je m'occupe de tout ça demain car je n'ai mes sources ici.

    Merci bien

Discussions similaires

  1. XMLHttpRequest comportement étrange..
    Par SPACHFR dans le forum Général JavaScript
    Réponses: 13
    Dernier message: 23/06/2009, 17h55
  2. Comportement étrange apres une désinstallation
    Par Sunchaser dans le forum Excel
    Réponses: 4
    Dernier message: 06/08/2005, 19h44
  3. comportement étrange d'une jointure ...
    Par amenis dans le forum PostgreSQL
    Réponses: 5
    Dernier message: 10/02/2005, 21h27
  4. [Système][Runtime][Exec] Comportement étrange au lancement de BeSweet
    Par divxdede dans le forum API standards et tierces
    Réponses: 1
    Dernier message: 06/06/2004, 09h54
  5. Réponses: 2
    Dernier message: 22/09/2003, 11h23

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