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"> 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é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
Partager