Problème liste déroulante sur IE8, ok sur fir

Fermé
celin68 - 21 mai 2012 à 12:56
Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 - 22 mai 2012 à 10:27
Bonjour,
je suis en train de créer une application web sur IE8 reliée à une base de données.
J'ai une liste déoulante qui affiche ce qu'il y a dans ma base de données. Sur firefox c'est ok mais sur IE8, ça me met une liste vide. Pourquoi ?

Voici mon code php

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
  <head>
    <meta name="generator" content="HTML Tidy for Windows (vers 14 February 2006), see www.w3.org" />
    <meta http-equiv="Content-Type" content="text/html; CHARSET=iso-8859-1" />
    <title>    </title>
    <link rel="stylesheet" type="text/css" href="css/main.css" media="screen" />
    <link rel="stylesheet" type="text/css" href="css/print.css" media="print" />
    <script type="text/javascript" src="js/common.js"></script>
    <script type="text/javascript" src="js/oXRH.js"></script>
  </head>
  
  <body id="type-b">
    <div id="wrap">				
<p id="lignes">
<select id="lignesSelect" onclick="ajax();" >
	<option value="">Choisissez une ligne</option>
	<option disabled="disabled">---------------</option>
</select>
</p>

					

<script type="text/javascript">

function ajax()
{		
	var xhr   = getXMLHttpRequest();

	xhr.onreadystatechange = function() {
		if (xhr.readyState == 4 && (xhr.status == 200 || xhr.status == 0)) {
				
			// obtenir lignesSelect
			var lignesSelect=document.getElementById("lignesSelect");	
			
			// afficher le resultat du data
			lignesSelect.innerHTML+=xhr.responseText;
			
		} 	
	};
	
	xhr.open("POST", "requete.php", true);
	xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
	xhr.send("action=ajax");
}
				
</script>				
  </body>
</html>


Ma page php
 <?php	
 	$serveur = "127.0.0.1";
	$nom_base = "mydb";
	$login = "g21";
	$motdepasse = "g21"; 
	$co = mysql_connect ($serveur,$login,$motdepasse) or die ('ERREUR '.mysql_error()); 
	mysql_select_db($nom_base, $co);
	 if (mysql_connect ($serveur,$login,$motdepasse)) {
	  echo 'connexion réussie';  
	}
	else {
	  echo 'connexion impossible...'.mysql_error();
	}  		
	
	$query = "SELECT NUM_LIGNE FROM LIGNE ORDER BY NUM_LIGNE" ; 
	$res = mysql_query($query) or die('Erreur SQL !<br>'.$query.'<br>'.mysql_error());

	while ($ligne=mysql_fetch_assoc($res))
	{
		echo "<option value=\"".$ligne ['NUM_LIGNE']."\">".$ligne ['NUM_LIGNE']."</option>";	
	}
	mysql_close();
/* } */?> 


Merci pour votre aide
A voir également:

6 réponses

Bonsoir,
Je ne sais pas si ça résoudra ton problème ou bien si le problème vient de là mais à tout hasard je te donne le lien http://msdn.microsoft.com/fr-fr/library/cc534581(v=vs.85).aspx
0
Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894
21 mai 2012 à 21:47
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
  <head>
    <meta name="generator" content="HTML Tidy for Windows (vers 14 February 2006), see www.w3.org" />
    <meta http-equiv="Content-Type" content="text/html; CHARSET=iso-8859-1" />
    <title>    </title>
    <link rel="stylesheet" type="text/css" href="css/main.css" media="screen" />
    <link rel="stylesheet" type="text/css" href="css/print.css" media="print" />
    <script type="text/javascript" src="js/common.js"></script>
    <script type="text/javascript" src="js/oXRH.js"></script>
  </head>
  
  <body id="type-b">
    <div id="wrap">				
<p id="lignes">
<select id="lignesSelect" onclick="ajax();" >
	<option value="">Choisissez une ligne</option>
	<option disabled="disabled">---------------</option>
</select>
</p>

					

<script type="text/javascript">

function ajax()
{		
	var xhr   = getXMLHttpRequest();

	xhr.onreadystatechange = function() {
		if (xhr.readyState == 4 && (xhr.status == 200 || xhr.status == 0)) {
				
			// obtenir lignesSelect
			var liste=document.getElementById("lignes");	
			
			// afficher le resultat du data
			liste.innerHTML+=xhr.responseText;
			
		} 	
	};
	
	xhr.open("POST", "requete.php", true);
	xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
	xhr.send("action=ajax");
}
				
</script>				
  </body>
</html>



Ma page php

 <?php	
 	$serveur = "127.0.0.1";
	$nom_base = "mydb";
	$login = "g21";
	$motdepasse = "g21"; 
	$co = mysql_connect ($serveur,$login,$motdepasse) or die ('ERREUR '.mysql_error()); 
	mysql_select_db($nom_base, $co);
	/*
	cette partie inutile car tu fais deux fois la connexion au serveur et si elle ne réussit pas le or die sort du script
	 if (mysql_connect ($serveur,$login,$motdepasse)) {
	  echo 'connexion réussie';  
	}
	else {
	  echo 'connexion impossible...'.mysql_error();
	}  		
	*/
	$query = "SELECT NUM_LIGNE FROM LIGNE ORDER BY NUM_LIGNE" ; 
	$res = mysql_query($query) or die('Erreur SQL !<br>'.$query.'<br>'.mysql_error());
	
	//il faut renvoyer tout le select
		echo '<select id="lignesSelect" onclick="ajax();" >
	<option value="">Choisissez une ligne</option>
	<option disabled="disabled">---------------</option>';
	while ($ligne=mysql_fetch_assoc($res))
	{
		echo "<option value=\"".$ligne ['NUM_LIGNE']."\">".$ligne ['NUM_LIGNE']."</option>";	
	}
	echo '</select>';
	mysql_close();
/* } */?> 

0
Toujours rien dans IE. C'est un bug référencé chez MS depuis 2003 et toujours pas corrigé.
http://support.microsoft.com/kb/276228/fr


Merci pour votre aide
0
Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894
22 mai 2012 à 09:03
ce que je ne comprend pas, tu cliques dans une liste déroulante pour ré afficher cette liste déroulante ?

ou est ta fonction getXMLHttpRequest(); ?

c'est peut être à ce niveau que ça bloque
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Je veux remplir la liste déroulante en cliquant dessus. La fonction getXMLHttpRequest(); est dans mon Js avant la page php.

function ajax()
{
var xhr = getXMLHttpRequest();

xhr.onreadystatechange = function() {
if (xhr.readyState == 4 && (xhr.status == 200 || xhr.status == 0)) {

// obtenir lignesSelect
var liste=document.getElementById("lignes");

// afficher le resultat du data
liste.innerHTML+=xhr.responseText;

}
};

xhr.open("POST", "requete.php", true);
xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
xhr.send("action=ajax");
}
0
Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894
Modifié par Alain_42 le 22/05/2012 à 10:28
essayes comme ça en enlevant ==0 et avec l'alerte pour voir ce que tu reçoit

function ajax()  
{  
var xhr = getXMLHttpRequest();  

xhr.onreadystatechange = function() {  
//if (xhr.readyState == 4 && (xhr.status == 200 || xhr.status == 0)) {  
if (xhr.readyState == 4 && xhr.status == 200 ) {  

// obtenir lignesSelect  
var liste=document.getElementById("lignes");  
alert("Recu de php: "+xhr.responseText);  
// afficher le resultat du data  
liste.innerHTML=xhr.responseText;  //modif ici aussi

}  
};  

xhr.open("POST", "requete.php", true);  
xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');  
xhr.send("action=ajax");  
}


et quel est le code de ta fonction getXMLHttpRequest() ?
0