Bonjour à tous,

Voilà mon problème, une liste liée qui fonctionnait correctement ne marche plus maintenant sur IE 10 et Chrome. J'ai localisé le problème en faisant quelques tests et il s'avère que lors de l'envoi de mon formulaire le value de la seconde liste "se perd".

Voici le code concerné (évidemment le tout est en include dans un formulaire assez important :

appel1.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
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
<script type="text/javascript">
var xhr = null;
function getXhr(){
	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; 
	} 
}
 
	/**
	* Méthode qui sera appelée sur le click du bouton
	*/
	function go_1(){
		getXhr();
		// 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
				document.getElementById('famille_1').innerHTML = leselect;
			}
		}
 
		// Ici on va voir comment faire du post
		xhr.open("POST","../appels/appel2.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, l'id de l'auteur
		sel = document.getElementById('id_societe');
		idgenre = sel.options[sel.selectedIndex].value;
		xhr.send("idGenre_1="+idgenre);
	}
</script>
Code php : 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
<table>
	<tr>
		<td class="bold">
			Société : 
			<select name="id_societe" id="id_societe" onchange="go_1();" style="width:150px;">
			<option value="">Société</option>
			<?php
			$search_societes_left=mysql_query("SELECT id_societe, nom_societe FROM conf_societes");
			while($find_societes_left=mysql_fetch_array($search_societes_left))
			{
				echo '<option value="'.$find_societes_left['id_societe'].'"';
				if($_GET['id_societe']==$find_societes_left['id_societe'])
				{
					echo 'selected="selected"';
				}
				echo '>'.$find_societes_left['nom_societe'].'</option>';
			}
			?>
			</select>
		</td>
		<td class="bold">
			&nbsp;Magasin : 
			<div id="famille_1" style="display:inline">
			<select name="id_shop" id="" style="width:150px;">
			<option value=""></option>
			<?php
			if(isset($_GET['id_shop']))
			{
				$id_shop_left_selected_gauche=$_GET['id_shop'];
				$search_shop_selected_gauche=mysql_ligne("SELECT shop FROM conf_shop WHERE id_shop='$id_shop_left_selected_gauche'");
				echo '<option value="'.$id_shop_left_selected_gauche.'">'.$search_shop_selected_gauche['shop'].'</option>';
			}
			?>
			</select>
			</div>
		</td>
	</tr>
</table>



appel2.php
Code php : 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
include_once '../conf/conf.php';
mysql_connect(_DB_HOST,_DB_LOGIN,_DB_PWD);
mysql_select_db(_DB_NAME);
echo '<select name="id_shop"  id="famille_s_1" style="width:150px;">';
if(isset($_REQUEST['idGenre_1']))
{
	$res = mysql_query("SELECT id_shop, shop FROM conf_shop WHERE id_societe=".$_REQUEST["idGenre_1"]." ");
	if(mysql_num_rows($res)>1)
	{
		echo '<option value="">S&eacute;lectionnez un magasin</option>';
	}
	while($row = mysql_fetch_assoc($res))
	{
		echo '<option value="'.$row['id_shop'].'">'.htmlentities($row['shop']).'</option>';
	}
}
echo "</select>";
?>
<?php mysql_close(); ?>


Donc avant (IE9 surtout), la valeur du champ id_shop passait sans problème et le formulaire était donc bien traité. Maintenant sous IE10, Chrome et peut-être ailleurs, mon script de traitement ne récupère aucune valeur du champ id_shop. Cependant le champ id_societe lui n'a aucun soucis. Voilà pourquoi je pense que le problème vient du javascript mais je n'ai aucune idée du pourquoi et j'aurais donc bien besoin de vos lanternes

Merci d'avance pour vos réponses