[AJAX] Probleme d'acces ID liste chainé

Probleme d'acces ID liste chainé [AJAX] - HTML/CSS - Programmation

Marsh Posté le 27-02-2008 à 08:24:46    

Bonjour,
 
 
je me lance doucement dans l'ajax, et je commence a prendre consciences de sa puissance, par contre je bloque sur une 3 listes chainées entre elles ...  
 
lorsque ma seconde est remplie l'id du select semble inaccessible, et donc j'ai un probleme d'acces a l'objet de la seconde liste générée par ajax,
 

Code :
  1. sel = document.getElementById('modele');
  2. idmodele = sel.options[sel.selectedIndex].value;


 
la j'ai un message d'erreur sel.options a la valeur nul ou n'est pas un objet,
 
lorsque j'affiche le code source je n'appercois pas la liste générée en ajax ! donc je n'arrive pas a débugger...
 
:evilred:
 
edit :  
voyez vous meme ...
http://www.jantes-alu.com/tst/index.php
 
 
 
 
 
voici mon code :
 
 
Javascript  

Code :
  1. <script type='text/javascript'>
  2.   function getXhr(){
  3.                                 var xhr = null;
  4.    if(window.XMLHttpRequest) // Firefox et autres
  5.       xhr = new XMLHttpRequest();
  6.    else if(window.ActiveXObject){ // Internet Explorer  
  7.       try {
  8.                   xhr = new ActiveXObject("Msxml2.XMLHTTP" );
  9.               } catch (e) {
  10.                   xhr = new ActiveXObject("Microsoft.XMLHTTP" );
  11.               }
  12.    }
  13.    else { // XMLHttpRequest non supporté par le navigateur  
  14.       alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest..." );
  15.       xhr = false;
  16.    }
  17.                                 return xhr;
  18.   }
  19.   /**
  20.   * Méthode qui sera appelée sur le click du bouton
  21.   */
  22.   function go(){
  23.    var xhr = getXhr();
  24.    // On défini ce qu'on va faire quand on aura la réponse
  25.    xhr.onreadystatechange = function(){
  26.     // On ne fait quelque chose que si on a tout reçu et que le serveur est ok
  27.     if(xhr.readyState == 4 && xhr.status == 200){
  28.      leselect = xhr.responseText;
  29.      // On se sert de innerHTML pour rajouter les options a la liste
  30.      document.getElementById('modele').innerHTML = leselect;
  31.     }
  32.    }
  33.    // Ici on va voir comment faire du post
  34.    xhr.open("POST","scripts/agax_listerecherchemodele.php",true);
  35.    // ne pas oublier ça pour le post
  36.    xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
  37.    // ne pas oublier de poster les arguments  
  38.    // ici, l'id  
  39.    sel = document.getElementById('marque');
  40.    idmarque = sel.options[sel.selectedIndex].value;
  41.    xhr.send("idMarque="+idmarque);
  42.   }
  43.   function gotst(){
  44.    alert("tst" );
  45.    sel = document.getElementById('modele');
  46.    idmodele = sel.options[sel.selectedIndex].value;
  47.    }
  48.   function go_type(){
  49.    var xhr = getXhr();
  50.    // On défini ce qu'on va faire quand on aura la réponse
  51.    xhr.onreadystatechange = function(){
  52.     // On ne fait quelque chose que si on a tout reçu et que le serveur est ok
  53.     if(xhr.readyState == 4 && xhr.status == 200){
  54.      leselect = xhr.responseText;
  55.      // On se sert de innerHTML pour rajouter les options a la liste
  56.      document.getElementById('type').innerHTML = leselect;
  57.     }
  58.    }
  59.    // Ici on va voir comment faire du post
  60.    xhr.open("POST","scripts/agax_listerecherchetype.php",true);
  61.    // ne pas oublier ça pour le post
  62.    xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
  63.    // ne pas oublier de poster les arguments  
  64.    // ici, l'id  
  65.    sel = document.getElementById('modele');
  66.    idmodele = sel.options[sel.selectedIndex].value;
  67.    xhr.send("idModele="+idmodele);
  68.   }
  69.  </script>


 
Mes listes

Code :
  1. <?
  2.   //$req="select * from voiture_marque where visible = 1 order by id ASC";
  3.   //$req="SELECT DISTINCT MARQUE, ID FROM `database` GROUP BY MARQUE ";
  4.   $req="SELECT DISTINCT MARQUE  FROM `database` WHERE 1";
  5.   $bdd->setQuery($req);
  6.   $rescar = $bdd->executeQuery();
  7.  ?>
  8.         <select name="marque"  title="Constructeurs automobiles" class="rechercheliste"  onchange="go();">
  9.           <option value="-1" selected="selected">Marque</option>
  10.           <?
  11.   for($i=0;$i<sizeof($rescar);$i++){
  12.  if($rescar[$i][0]!="" ){
  13.   ?>
  14.           <option  value="<? echo $rescar[$i][0]; ?>" ><? echo stripslashes(nl2br($rescar[$i][0])); ?></option>
  15.           <?
  16.   }
  17.  } 
  18.   ?>
  19.           </select>
  20.     <div id='modele' style='display:inline'>
  21.       <select name="modele" id="modele" title="Modeles automobiles"  class="rechercheliste">
  22.         <option value='-1'>Modèle</option>
  23.       </select>
  24.       </div>
  25.     <div id='type' style='display:inline'>
  26.       <select name="type" id="type" title="Type automobiles"  class="rechercheliste" >
  27.         <option value='-1'>Type</option>
  28.         </select>
  29.       </div>


 
agax_listerecherchemodele.php

Code :
  1. <?php
  2. include ("../tpl/ho.php" );
  3. //connexion
  4. echo "<select name='modele' id='modele' class='rechercheliste' OnChange='gotst()'>";
  5. if(isset($_POST["idMarque"])){
  6. $idmarque=$_POST["idMarque"];
  7. // $idmarque=6;
  8. //$req="select * from voiture_modele where IDMARQUE = ".$idmarque." and visible = 1 order by id ASC";
  9. $req="SELECT DISTINCT MODELE FROM `database` WHERE MARQUE = '$idmarque' ";
  10. $bdd->setQuery($req);
  11. $res = $bdd->executeQuery();
  12. for($i=0;$i<sizeof($res);$i++){
  13.   echo "<option value='".stripslashes($res[$i][0])."'>".stripslashes($res[$i][0])."</option>";
  14.  }
  15. }else{
  16. echo "<option value='-1'>Modèle</option>";
  17. }
  18.  echo "</select>";
  19. ?>


 
 
agax_listerecherchetype.php
(la requette n'est pas a jour mais de tte facon l'ajax n'ajax pas !)
 

Code :
  1. <?php
  2. include ("../tpl/ho.php" );
  3. if(isset($_POST["idModele"])){
  4. $idmodele=$_POST["idModele"];
  5. // $idmarque=6;
  6. //$req="select * from voiture_modele where IDMARQUE = ".$idmarque." and visible = 1 order by id ASC";
  7. $req="SELECT DISTINCT MODELE FROM `database` ";
  8. $bdd->setQuery($req);
  9. $res = $bdd->executeQuery();
  10. echo "<select name='type' id='type' class='rechercheliste'>";
  11. for($i=0;$i<sizeof($res);$i++){
  12.   echo "<option value='".$res[$i][0]."'>".stripslashes($res[$i][0])."</option>";
  13.  }
  14.  echo "</select>";
  15. }
  16. ?>


 
 
J'ai une erreur sel.option a la valeur null ou n'est pas un objet
et lorsque j'affiche la source forcément ma liste n'apparait pas .... donc je ne peux pas débugger ...


---------------
la vie à le goût qu'on lui donne !! Vive le photo numérique et le tirage photo
Reply

Marsh Posté le 27-02-2008 à 08:24:46   

Reply

Marsh Posté le 27-02-2008 à 09:49:39    

Tu fais ça:

Code :
  1. sel = document.getElementById('marque');


Pourrais tu nous indiquer où dans ton code, tu as un noeud avec l'id marque stp!


---------------
Software and cathedrals are much the same - first we build them, then we pray.
Reply

Marsh Posté le 27-02-2008 à 12:13:18    

oui excuse moi c'est dans la premiere liste, je n'ai pas mis le code car je n'ai pas jugé important mais il est visible sur  
 
http://www.jantes-alu.com/tst/index.php  


---------------
la vie à le goût qu'on lui donne !! Vive le photo numérique et le tirage photo
Reply

Marsh Posté le 27-02-2008 à 12:25:12    

c'est bien sur cette url que j'ai regardé :o
Donc montre moi le bout de code ou il y a id="marque"...


---------------
Software and cathedrals are much the same - first we build them, then we pray.
Reply

Marsh Posté le 27-02-2008 à 13:04:11    

C'est exacte en faisant des tests j'ai du le virer ...  cependent il etait dans la premiere liste "marque". Bon ca fonctionne sans donc il devait pas etre indispensable ... ?


---------------
la vie à le goût qu'on lui donne !! Vive le photo numérique et le tirage photo
Reply

Marsh Posté le 27-02-2008 à 13:18:02    

mims1664 a écrit :

la j'ai un message d'erreur sel.options a la valeur nul ou n'est pas un objet,


mims1664 a écrit :

Bon ca fonctionne sans donc il devait pas etre indispensable ... ?


:/ :/ :/
 
S'quoi le problème alors?
 


---------------
Software and cathedrals are much the same - first we build them, then we pray.
Reply

Marsh Posté le 27-02-2008 à 13:23:26    

c'est pour récupérer l'ID de la seconde liste pour remplir la 3eme ....


---------------
la vie à le goût qu'on lui donne !! Vive le photo numérique et le tirage photo
Reply

Marsh Posté le 27-02-2008 à 14:00:00    

"chez moi", ça plante à la 1ere liste hein ...  
Impossible d'avoir la 2eme


---------------
Software and cathedrals are much the same - first we build them, then we pray.
Reply

Marsh Posté le 27-02-2008 à 15:44:42    

Je viens de rajouter le ID="marque" dans la premiere liste, essaye voir ...
 
sinon tu as IE ? quel version ?
 
merci

Reply

Marsh Posté le 27-02-2008 à 15:57:21    

mims1664 a écrit :

Je viens de rajouter le ID="marque" dans la premiere liste, essaye voir ...


tout qui marche c'est magic  [:cerveau zeusy]  

mims1664 a écrit :

sinon tu as IE ? quel version ?


Firefox ça s'appele  


---------------
Software and cathedrals are much the same - first we build them, then we pray.
Reply

Marsh Posté le 27-02-2008 à 15:57:21   

Reply

Marsh Posté le 27-02-2008 à 16:08:24    

TOUT quand tu dis TOUT c'est juste le second ? ?


---------------
la vie à le goût qu'on lui donne !! Vive le photo numérique et le tirage photo
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed