Je planche depuis ce matin sur ce problème : sous Firefox (pas testé sous Opéra mais sous IE ça marche) mon formulaire ne prend pas en compte la valeur générée par Ajax dans l'envoi :-(
Mon formulaire marche très bien puisque IE récupère bien tout en $_POST, mais pas moyen de travailler avec la valeur générée par Ajax, et c'est bien sûr d'elle dont j'ai besoin.
En fait je fais saisir un code postal et génère une liste déroulante des villes correspondante via Ajax. Dans ce select je récupère la valeur INSEE de la ville selected, mais ça ne passe pas sous Firefox après le submit !
Ma base de données comporte :
- code postal
- code INSEE
- nom de la commune
- latitude
- longitude
Voici le code de mon "ajax.js" (appelé dans le <input> du code postal par un "onChange=go_ville()", lui-même dans un div dont l'id est bêtement "ajax") :
Et voici le code de ma page "commune.php" appelée par l'Ajax, dans lequel on trouve la requête et l'affichage de la liste déroulante :
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 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; } return xhr; } function go_ville(){ var xhr = getXhr(); xhr.onreadystatechange = function(){ if(xhr.readyState == 4 && xhr.status == 200){ document.getElementById('ajax').innerHTML = xhr.responseText; } } xhr.open("POST","communes.php",true); xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded'); idcp = document.getElementById('cp').value; xhr.send("cp="+idcp); }
HELP !!!!
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 <? echo "<select name=\"ville\" class=\"champ\" style=\"width:145px;color:black\">\n"; if ($_POST[cp]){ include("connex.php"); $res=mysql_query("SELECT insee,commune FROM communes WHERE code='$_POST[cp]' ORDER BY commune"); while($row=mysql_fetch_row($res)) { echo "<option value=\"$row[0]\">".stripslashes(utf8_encode($row[1]))."</option>\n"; }} echo "</select>\n"; ?>
NB : mon site en cours de développement se trouve à l'adresse www.lokalokaz.fr
Partager