Forum-webmaster
Technique - programmation => Javascript / DOM / Ajax => Message commencé par: hairmenu le le 22-03-2007 a 16:18:54

Titre: AJAX sous FireFox
Posté par: hairmenu le le 22-03-2007 a 16:18:54

Bonjour,

J ai developper plein de form avec Ajax, qui marchent sous IE et FF mais subitement, j ai un form qui ne marche plus sous FF. La donnée n'est plus passé dans le POST.

Pourtant comme vous pourrez voir le code est basique! Seulement voila, la seconde varaible (id_project), n est jamais recu par le POSt sous Ff (marche sous IE cependant).

C est trés frustrant comme truc, quelqu un a une suggestion?

=== test2.php ==
<select name='project' id='id_project'>
<option value='3'>3</option>
<option value='4'>4</option>
</select>
====


==test.php ===
<!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">
<body>
<?php

while(list($key,$val) = each($_POST)){
   echo "$key => $val<BR>";
}


   ?>
<script language="javascript">
function displayproject(f){
   var xhr_object = null;
   if(window.XMLHttpRequest) // Firefox
    xhr_object = new XMLHttpRequest();
   else if(window.ActiveXObject) // Internet Explorer
    xhr_object = new ActiveXObject("Microsoft.XMLHTTP");
   else { // XMLHttpRequest non supporté par le navigateur
    alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest...");
    return;
   }
      var filename = "test2.php";
      
      var data = null;
      xhr_object.open("POST", filename, true);
      
      xhr_object.onreadystatechange = function() {
      if(xhr_object.readyState == 4) {
          document.getElementById('toto').innerHTML = xhr_object.responseText;
      }
      }
      
      xhr_object.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
      xhr_object.send(data);

}
</script>

   <table border="1" cellpadding="5" cellspacing="1">
      <form name="form2" action="" method="post">
         <tr>
            <td >
               <b>Client :</b>
            </td>
            <td >
               <select name="id_client" id="clientlist" onChange="displayproject(form2)">
            <option value="5">5</option>
            <option value="6">6</option>
          </select></td>
         </tr>
         <tr>
            <td >
               <b>Project :</b>
            </td>
            <td>
               <div id="toto">&nbsp;</div>
            </td>
         </tr>
         <tr >
            <td colspan=2>
               <input type="submit" align="center">
            </td>
         </tr>
      </form>
   </table>
   </body>
</html>

======

Titre: Re:AJAX sous FireFox
Posté par: tripy le le 02-11-2007 a 22:20:33

Ok, j'ai 2 nuits blanches dans la tête et je vois un peu trouble, mais si je vois pas trop faux, tu as

Code:

function displayproject(f)

qui prend f comme la référence au formulaire.

Puis, plus bas tu fais un

Code:

var data = null;


Et enfin, tu lance ta requête avec

Code:

xhr_object.send(data);


Ca me parait un peu bizarre, pour dire le moins, puisque tu as assigné null comme valeur à ta variable data...
Mais je ne suis pas habitué à cette syntaxe là, j'avoue...

Perso, je ne suis pas fan d'envoyer un form comme ça, j'avoue.
Je préfère extraire et valider une à une toutes les données nécessaire, et construire mon vecteur de données à envoyer.
Au moins je suis certain de ce qui se passe...


Forum-webmaster | Actionné par YaBB SE
© 2001-2003, YaBB SE Dev Team. Tous droits réservés.