Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1464 connectés 

  FORUM HardWare.fr
  Programmation
  HTML/CSS

  Problème de récupération valeur d'un select en javascript avec firefox

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Problème de récupération valeur d'un select en javascript avec firefox

n°1371350
JC_Shaolan
Posté le 21-05-2006 à 00:11:03  profilanswer
 

Bonjour, alors voilà j'ai fait un petit module de recherche en ajax. Ca marche parfaitement sous Internet Explorer et Opera mais sous Firefox, ca ne veut pas.
Voici un petit exemple de l'application à cette adresse : http://generation-iutfbleau.com/te [...] herche.php
 
Vous pouvez constater que ca ne marche pas sous Firefox. J'ai réussi a identifier d'où vient mon problème : il ne récupère pas la valeur des "select".  
 
Voici une portion de mon code javascript :
 

Code :
  1. //Initialise un objet XMLHttpRequest
  2. function get_xhr()
  3. {
  4.      if(window.XMLHttpRequest) xhr=new XMLHttpRequest(); //Navigateurs Firefox, Opera et autres
  5. else if(window.ActiveXObject)                            //Navigateur Internet Explorer
  6.    {
  7.    try { xhr=new ActiveXObject("Msxml2.XMLHTTP" ); }
  8.    catch(err) { xhr=new ActiveXObject("Microsoft.XMLHTTP" ); }
  9.    }
  10. else                                                     //XMLHttpRequest non supporté par le navigateur
  11.    {
  12.    alert("Votre navigateur ne supporte pas les objets XMLHttpRequest. Pour remédier à ce problème, veuillez mettre à jour votre navigateur." );
  13.    xhr=false;
  14.    return -1;
  15.    }
  16. }
  17. //Récupère le nombre de personnes sélectionnées
  18. function nb_personnes()
  19. {
  20. //Etat n°4 : données prêtes. Statut n°200 : code de réponse du serveur (200 : ok)
  21. if(xhr.readyState==4 && xhr.status==200) document.getElementById('menu_recherche').innerHTML=xhr.responseText;
  22. }
  23. //Récupère le type d'affichage sélectionnées
  24. function type_affichage()
  25. {
  26. //Etat n°4 : données prêtes. Statut n°200 : code de réponse du serveur (200 : ok)
  27. if(xhr.readyState==4 && xhr.status==200) document.getElementById('menu_recherche').innerHTML=xhr.responseText;
  28. }
  29. //Envoie une requête dès que les données sont prêtes
  30. function envoyer_requete(url,process,methode,asynchrone,flag)
  31. {
  32. //Initialisation objet XMLHttpRequest
  33. get_xhr();
  34. xhr.onreadystatechange=process;
  35. //Url pour le menu de recherche :  
  36. if(flag==1) url=url+"&nb="+document.getElementById('nombre_personnes').value+"&affichage="+document.getElementById('type_affichage').value;
  37. if(flag==2) document.getElementById('chargement').style.display='block';
  38. //On ouvre la connexion avec le serveur
  39. xhr.open(methode,url,asynchrone);
  40. //On envoie la requête
  41. xhr.send(null);
  42. }


 
 
Le problème vient donc du "document.getElementById('nombre_personnes').value" et du "document.getElementById('type_affichage').value" dans la fonction envoyer_requete(). Si je mets une valeur absolue pour la variable url, ca marche parfaitement.
J'ai cherché sur le net les différentes façons de récupérer les valeurs d'un select mais toutes les solutions sur j'ai pu essayer n'ont pas marchées.
Ah oui, autre précision lorsque j'exécute la console javascript de firefox, il me dit : document.getElementById("nombre_personnes" ) has no properties. Pourtant, il a la propriété "value" dans mon code ...
 
Si quelqu'un a une idée, merci pour vos réponses.

mood
Publicité
Posté le 21-05-2006 à 00:11:03  profilanswer
 

n°1371355
gatsu35
Blablaté par Harko
Posté le 21-05-2006 à 00:20:49  profilanswer
 

on pourrait voir le HTML associé à ton truc ?

n°1371359
JC_Shaolan
Posté le 21-05-2006 à 00:28:45  profilanswer
 

Alors en fait j'ai un fichier php qui fait appel à une fonction : "menu_recherche()" qui gère les requêtes en fonction des paramètres sélectionnées :  
 

Code :
  1. //On affiche le menu de recherche                                                     
  2. echo "<table border='0' width='448' cellpadding='2' cellspacing='0'>";                               
  3. menu_recherche($query,$nom,$nb_personnes,$methode,$type_affichage,1);                       
  4. echo "</table> <br/>";
  5.        
  6. //On affiche le résultat de la recherche
  7. echo "<body onload=\"envoyer_requete('$site/ajax.php?fct=1&flag=1&arg_req=$nom&ordre=$methode',nb_personnes,'GET','true',1);\">";
  8. echo "</body>";       
  9.       
  10. //Ajax : si la requête change, elle est réaffichée
  11. echo "<div id='menu_recherche'> </div>";


 
Cette partie fait appel à la fonction menu_recherche() que voici :  

Code :
  1. function menu_recherche($requete,$arg_req,$nb,$ordre,$type_affichage,$flag)
  2. {
  3. //Valeur du nombre de personnes par page et du type d'affichage
  4. $nb_personnes[0]="5"; $nb_personnes[1]="10"; $nb_personnes[2]="20"; $nb_personnes[3]="30"; $nb_personnes[4]="40"; $nb_personnes[5]="50";
  5. $affichage[0]="normal"; $affichage[1]="detaille";
  6. //On réactualise la requête en ajoutant la contrainte du nombre de personne à afficher et le type d'affichage
  7. $requete.= " limit 0,$nb";
  8. //Menu déroulant "nombre de personnes à afficher"
  9. echo "<tr> <td> <div align='left'>";
  10. echo "Personnes par page : ";
  11. echo "<select name='nombre_personnes' onChange=\"envoyer_requete('$site/ajax.php?fct=1&flag=$flag&arg_req=$arg_req&ordre=$ordre',nb_personnes,'GET','true',1);\">";
  12. for($i=0;$i<count($nb_personnes);$i++)
  13.    {
  14.    if($nb_personnes[$i]==$_COOKIE["nb_personnes"]) echo "<option selected value='$nb_personnes[$i]'> $nb_personnes[$i] </option>";
  15.    else echo "<option value='$nb_personnes[$i]'> $nb_personnes[$i] </option>";
  16.    }           
  17. echo "</select>";
  18. //Menu déroulant "Type d'affichage"
  19. echo "<td> <div align='right'>";
  20. echo "Affichage : ";
  21. echo "<select name='type_affichage' onChange=\"envoyer_requete('$site/ajax.php?fct=1&flag=$flag&arg_req=$arg_req&ordre=$ordre',type_affichage,'GET','true',1);\">";
  22. for($i=0;$i<count($affichage);$i++)
  23.    {
  24.    if($affichage[$i]==$_COOKIE["type_affichage"]) echo "<option selected value='$affichage[$i]'> $affichage[$i] </option>";
  25.    else echo "<option value='$affichage[$i]'> $affichage[$i] </option>";
  26.    }     
  27. echo "</select> </td> </tr>";
  28. echo "</div>";
  29. }


 
Après une fois la fonction menu_recherche() exécutée, elle fait appel au javascript que j'ai mis au début de cette page et qui est chargé entre autre de récupérer les valeurs des 2 selects.


Message édité par JC_Shaolan le 21-05-2006 à 00:31:07
n°1371362
gatsu35
Blablaté par Harko
Posté le 21-05-2006 à 00:44:37  profilanswer
 

tu fais un getElementById sur un élément qui n'a pas d'id [:petrus75]
 
si déjà en plus du name="", tu mettais un id je pense que cela fonctionnerai mieux [:petrus75]
 
un autre truc me choc :  
si ce code :  

Code :
  1. //On affiche le menu de recherche                                                     
  2.     echo "<table border='0' width='448' cellpadding='2' cellspacing='0'>";                               
  3.     menu_recherche($query,$nom,$nb_personnes,$methode,$type_affichage,1);                       
  4.     echo "</table> <br/>";
  5.          
  6.     //On affiche le résultat de la recherche
  7.     echo "<body onload=\"envoyer_requete('$site/ajax.php?fct=1&flag=1&arg_req=$nom&ordre=$methode',nb_personnes,'GET','true',1);\">";
  8.     echo "</body>";       
  9.                        
  10.     //Ajax : si la requête change, elle est réaffichée
  11.     echo "<div id='menu_recherche'> </div>";


c'est celui d'une seule et même page il est à chier mais d'une force  phénoménale.

n°1371364
JC_Shaolan
Posté le 21-05-2006 à 00:52:40  profilanswer
 

Ah oui, merci beaucoup Gatsu35. Je pensais que la propriété "name" correspondait à l'id ...  
De toute facon, ca sentait l'erreur bidon.
 
Sinon, à propos de ta dernière remarque, j'espère que je te rassure en te disant que ce n'est pas celui d'une seule et même page. Il y a bien d'autre chose à côté mais j'allais pas flooder avec des centaines de lignes de code.
 
Encore Merci  :bounce:


Message édité par JC_Shaolan le 21-05-2006 à 00:53:10

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  HTML/CSS

  Problème de récupération valeur d'un select en javascript avec firefox

 

Sujets relatifs
Probléme d'encoding maybeProbléme de lien
probleme de débutantProbléme isfile
probleme de formulaire avec easyphp 1.8problème avec easyphp
[MySQL] Problème de requêteproblème boutons radio
du php au javascriptProblème de sélection dans mes divs
Plus de sujets relatifs à : Problème de récupération valeur d'un select en javascript avec firefox


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR