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

  FORUM HardWare.fr
  Programmation
  HTML/CSS

  problème avec xmlhttprequest et firefox

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

problème avec xmlhttprequest et firefox

n°2023899
athome
Posté le 20-09-2010 à 15:33:37  profilanswer
 

Bonjour, je viens exposer mon soucis ici ;)
 
tout d'abord, je travail sur un formulaire, un 2eme menu déroulant dépendant du 1er et un 3eme dépendant du 2sd, il fonctionne très bien, voir les pages ci-dessous, mais il ne fonctionne que sous IE8, pas sous FF 3.6.10 !
 
J'ai cherché sur le web et cela proviendrait de xmlhttprequest voir du bouton submit...
 
Je suis débutant en php/mysql et pas de notion en java, j'aimerais des conseils sur mon problème, voir une solution ;)
 
voici les pages dont vous auriez besoin :
 
ajax.js

Code :
  1. function ajax(strthis)
  2. {
  3. var param = strthis.value;
  4.                 var unite = document.getElementById("unite" ).options[document.getElementById("unite" ).selectedIndex].value;
  5. $("#tr_codedial" ).empty();
  6. $.ajax
  7. (
  8.  {
  9.   type: "POST",
  10.   url: "select_codedial.php",
  11.   data: "var="+param,
  12.   success:
  13.   function(msg)
  14.   {
  15.    $("#tr_codedial" ).append("<td><div align='right'>Code Dialogue :</div></td><td><div align='left'>"+ msg +"</div></td>" );
  16.   }
  17.  }
  18. );
  19. }
  20. function ajax2(strthis)
  21. {
  22. var param = strthis.value;
  23.                 var intitule = document.getElementById("intitule" ).options[document.getElementById("intitule" ).selectedIndex].value;
  24. $("#tr_intitule" ).empty();
  25. $.ajax
  26. (
  27.  {
  28.   type: "POST",
  29.   url: "select_intitule.php",
  30.   data: "var="+param,
  31.   success:
  32.   function(msg)
  33.   {
  34.    $("#tr_intitule" ).append("<td><div align='right'>Intitul&eacute; Code Dialogue :</div></td><td><div align='left'>"+ msg +"</div></td>" );
  35.   }
  36.  }
  37. );
  38. }


 
form1.php

Code :
  1. <script type="text/javascript" src="jquery.js"></script>
  2. <script type="text/javascript" src="ajax.js"></script>
  3. <form method="POST" action="valide1.php" name="caapp">
  4. <tr id='tr_affaire' align="center">
  5.        <td><div align="right">Service : </div></td>
  6.                           <td><div align="left"><?php include('select_unite.php')?></div></td>
  7.                         </tr>
  8.      <tr id='tr_codedial'>
  9.        <td><div align="right">Code Dialogue : </div></td>
  10.                           <td><div align="left" id='tr_codedial'><?php include('select_codedial.php')?></div></td>
  11.                         </tr>
  12.      <tr id='tr_intitule'>
  13.        <td><div align="right">Intitulé Code Dialogue : </div></td>
  14.                           <td><div align="left" id='tr_intitule'><?php include('select_intitule.php')?></div></td>
  15.                         </tr>
  16. <input type="submit" value="Envoyer" />
  17.                   </form>


 
select_unite.php

Code :
  1. <HEAD>
  2. <script type="text/javascript" src="jquery.js"></script>
  3. <script type="text/javascript" src="ajax.js"></script>
  4. </HEAD>
  5. <BODY>
  6. <select id='unite' name='unite' onChange="ajax(this)">
  7.   <option value='void_affaire'>-</option>
  8.   <?php
  9.     include("../connexion.php" );
  10.    
  11.    
  12.    
  13.     $query = "SELECT DISTINCT unite FROM codedial ORDER BY unite ASC";
  14.     $rq = mysql_query($query) or die(mysql_error());
  15.    
  16.     while ($row=mysql_fetch_array($rq, MYSQL_ASSOC))
  17.     {
  18.       $unite = $row["unite"];
  19.       echo "<option value='$unite'>$unite</option>";
  20.     }
  21.     mysql_close();
  22.   ?>
  23. </select>
  24. </BODY>


 
select_codedial.php

Code :
  1. <HEAD>
  2. <script type="text/javascript" src="jquery.js"></script>
  3. <script type="text/javascript" src="ajax.js"></script>
  4. </HEAD>
  5. <BODY>
  6. <select id='codedial' name='codedial' onChange="ajax2(this)">
  7.   <option value='void_localisation'>-</option>
  8.   <?php
  9.     include("../connexion.php" );
  10.    
  11.     $var=$_POST['var'];
  12.    
  13.     $query = "SELECT DISTINCT codedial FROM codedial WHERE unite='$var' ORDER BY codedial ASC";
  14.     $rq = mysql_query($query) or die(mysql_error());
  15.     while ($row=mysql_fetch_array($rq, MYSQL_ASSOC))
  16.     {
  17.       $codedial = $row["codedial"];
  18.       echo "<option value='$codedial'>$codedial</option>";
  19.     } 
  20.     mysql_close();
  21.   ?>
  22. </select>
  23. </BODY>


 
select_intitule.php

Code :
  1. <HEAD>
  2. <script type="text/javascript" src="jquery.js"></script>
  3. <script type="text/javascript" src="ajax.js"></script>
  4. </HEAD>
  5. <BODY>
  6. <select id='intitule' name='intitule'>
  7.   <option value='void_localisation'>-</option>
  8.   <?php
  9.     include("../connexion.php" );
  10.    
  11.     $var=$_POST['var'];
  12.    
  13.     $query = "SELECT DISTINCT intitule FROM codedial WHERE codedial='$var' ORDER BY intitule ASC";
  14.     $rq = mysql_query($query) or die(mysql_error());
  15.     while ($row=mysql_fetch_array($rq, MYSQL_ASSOC))
  16.     {
  17.       $intitule = $row["intitule"];
  18.       echo "<option value='$intitule'>$intitule</option>";
  19.     } 
  20.     mysql_close();
  21.   ?>
  22. </select>
  23. </BODY>


Message édité par athome le 20-09-2010 à 20:24:00
mood
Publicité
Posté le 20-09-2010 à 15:33:37  profilanswer
 

n°2023963
esox_ch
Posté le 20-09-2010 à 19:29:37  profilanswer
 

C'est pas du Java mais du javascript , merci de modifier la catégorie :o


---------------
Si la vérité est découverte par quelqu'un d'autre,elle perd toujours un peu d'attrait
n°2024068
Paulp
~, sweet ~
Posté le 21-09-2010 à 10:46:30  profilanswer
 

Y'a-t-il une erreur dans la console javascript de firefox ?
Pour débugger du javascript sous firefox, je te conseille d'installer l'extension firebug. Tu pourras voir les erreurs dans le script, leur contexte, ...

n°2024141
athome
Posté le 21-09-2010 à 14:33:46  profilanswer
 

il m'indique simplement ces fichiers :

Code :
  1. http://localhost/test3/form/select_codedial.php?                          jquery.js (ligne 5252)


 
ce qui correspond à :
 

Code :
  1. try {
  2.   xhr.send(


 
je n'ai pas encore intégré cette fonction, je pense que cela vient de là, mais je m'y prend surement mal pour l'insérer et l'adapter à mon code
 
merci encore de votre aide


Message édité par athome le 21-09-2010 à 14:35:08
n°2024150
Paulp
~, sweet ~
Posté le 21-09-2010 à 15:23:04  profilanswer
 

et quel est le message de l'erreur ?
 
Par ailleurs dans ajax.js, strthis.value est une erreur, l'élément select n'a pas de value, ce sont les options.
tu peux remplacer par $(strthis).val()

n°2024154
athome
Posté le 21-09-2010 à 15:36:11  profilanswer
 

je n'ai pas de message d'erreur, j'ai simplement ces lignes qui apparaissent dans l'onglet console de firebug
la première apparait au choix du 1er menu déroulant et la 2eme ligne au 2eme menu déroulant
quand le clic sur envoyer (vers la base) toujours pas de message d'erreur !
 

Code :
  1. http://localhost/test3/form/select_codedial.php? 200 OK 26ms                          jquery.js (ligne 5252)
  2. http://localhost/test3/form/select_intitule.php? 200 OK 11ms                         jquery.js (ligne 5252)


 
j'ai aussi remplacé strthis.value par $(strthis).val()
 
cela ne change pas le bon fonctionnement du formulaire sous IE8
 
mais toujours ce probleme sous FF qui ne permet pas d'enregistrer les valeurs dans la base


Message édité par athome le 21-09-2010 à 15:40:16
n°2024160
Paulp
~, sweet ~
Posté le 21-09-2010 à 16:19:47  profilanswer
 

OK
Ces lignes dans firebug correspondent aux appels ajax qui se font bien.
Le code de retour 200 indique qu'il n'y a pas d'erreur HTTP, et l'indication jquery.js (ligne 5252) correspond à l'envoi de la requête AJAX (xhr.send())
 
Si tu cliques sur le + à gauche de la ligne de l'appel AJAX dans la console firebug, qu'y a-t-il dans l'onglet POST et dans l'onglet Réponse ?

n°2024173
athome
Posté le 21-09-2010 à 16:32:58  profilanswer
 

dans le premier POST il y a :

Code :
  1. <select id='codedial' name='codedial' onChange="ajax2(this)">
  2. <option value='-'>-</option>
  3. <option value='choix1'>choix1</option>
  4. <option value='choix2'>choix2</option>
  5. <option value='choix3'>choix3</option>
  6. <option value='choix4'>choix4</option>
  7. <option value='choix5'>choix5</option>
  8. <option value='choix6'>choix6</option></select>


 
dans le second POST il y a :

Code :
  1. <select id='intitule' name='intitule'>
  2.   <option value='-'>-</option>
  3.   <option value='choix1'>choix1</option></select>


 
dans le premier Réponse il y a :

Code :
  1. var titre1
  2. Source
  3. var=titre1


 
dans le second Réponse il y a :

Code :
  1. var choix1
  2. Source
  3. var=choix1

n°2024193
Paulp
~, sweet ~
Posté le 21-09-2010 à 17:14:19  profilanswer
 

Tu as inversé POST et Réponse.
 
Là on voit que tu postes bien les données que tu veux, et que tu récupères une réponse correcte.
 
Que se passe-t-il si tu exécutes, avec la console, $("#tr_intitule" ).append("<td>azerty</td>" );
 
Ensuite, en regardant ton code de plus près, je vois quelques trucs un peu moches :
- vire les balises head, body, script de tes scripts PHP appelés en ajax.
En gros, tu veux récupérer une balise <select>, donc vire le HTML autours de cette balise
- il n'y a pas de balise table autours de ta balise tr
- Dans le PHP, avant d'utiliser une variable POST ou GET dans une requête SQL, appelle la fonction mysql_escape_string, sinon n'importe qui peut supprimer ta base de données ...

n°2024405
athome
Posté le 22-09-2010 à 11:05:25  profilanswer
 

voici la réponse de la console :

Code :
  1. >>> $("#tr_intitule" ).append("<td>azerty</td>" );
  2. array: [tr#tr_intitule]


 
en fait j'avais déjà viré les balises head, body, script et HTML
des fichiers select_*.php ;)
 
voici à quoi il ressemble :
 
select_codedial.php

Code :
  1. <select id='codedial' name='codedial' onChange="ajax2(this)">
  2.   <option value='-'>-</option>
  3.   <?php
  4.     include("../connexion.php" );
  5.    
  6.     $var=$_POST['var'];
  7.    
  8.     $query = "SELECT DISTINCT codedial FROM codedial WHERE unite='$var' ORDER BY codedial ASC";
  9.     $rq = mysql_query($query) or die(mysql_error());
  10.     while ($row=mysql_fetch_array($rq, MYSQL_ASSOC))
  11.     {
  12.       $codedial = $row["codedial"];
  13.       echo "<option value='$codedial'>$codedial</option>";
  14.     } 
  15.     mysql_close();
  16.   ?>
  17. </select>


 
dans ma page de formulaire form1.php il y a en fait une balise mais je ne l'ai pas collé
ayant fait le tri sur page, voici la version complète :
 
form1.php

Code :
  1. <?php
  2. include("../connexion.php" );
  3. ?>
  4. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  5. <html xmlns="http://www.w3.org/1999/xhtml">
  6. <head>
  7. <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
  8. <title>form profil 1</title>
  9. <LINK REL="SHORTCUT ICON" HREF="../favicon.ico" />
  10. <link href="style2.css" rel="stylesheet" type="text/css" />
  11. <script type="text/javascript" src="jquery.js"></script>
  12. <script type="text/javascript" src="ajax.js"></script>
  13. <script language="javascript">
  14. function popupcentree(page,largeur,hauteur,options)
  15. {   
  16. var top=(screen.height-hauteur)/2;   
  17. var left=(screen.width-largeur)/2;   
  18. window.open(page,"","top="+top+",left="+left+",width="+largeur+",height="+hauteur+","+options);
  19. }
  20. </script>
  21. </head>
  22. <body leftmargin="0" topmargin="0" marginwidth="0" marginheight="0">
  23. <center>
  24.   <br />
  25.   <table width="957" class="tab" cellpadding="0" cellspacing="0">
  26.   <td height="18" colspan="3" valign="top"><table border="0" align="center" cellpadding="2" cellspacing="2">
  27.        <br />
  28. <div align="center">
  29.                   Formulaire création entrée profil 1<br /><br />
  30.                     <a href="donnees.php">Retour</a><br />
  31. <br />
  32.                   </div>
  33.                       <form method="POST" action="valide1.php" name="caapp">
  34.                      
  35.      <tr id='tr_affaire' align="center">
  36.        <td><div align="right">Service : </div></td>
  37.                           <td><div align="left"><?php include('select_unite.php')?></div></td>
  38.                         </tr>
  39.      <tr id='tr_codedial'>
  40.        <td><div align="right">Code Dialogue : </div></td>
  41.                           <td><div align="left" id='tr_codedial'><?php include('select_codedial.php')?></div></td>
  42.                         </tr>
  43.      <tr id='tr_intitule'>
  44.        <td><div align="right">Intitulé Code Dialogue : </div></td>
  45.                           <td><div align="left" id='tr_intitule'><?php include('select_intitule.php')?></div></td>
  46.                         </tr>
  47.                   </form>
  48.                       </table>
  49.      <br />
  50.   </td>
  51.                     
  52.             </table>
  53. </center>
  54. </body>
  55. </html>


 
sinon pour mysql_escape_string, je vais me renseigner
 
encore merci pour ton aide

mood
Publicité
Posté le 22-09-2010 à 11:05:25  profilanswer
 

n°2024425
Paulp
~, sweet ~
Posté le 22-09-2010 à 11:33:21  profilanswer
 

Quand tu exécutes le append via la console, vois-tu la cellule s'ajouter au tableau ?
Le site est-il en ligne quelque part, que je puisse regarder ce qui cloche ?
As-tu essayé de changer de version de jQuery ?

n°2024434
athome
Posté le 22-09-2010 à 11:48:02  profilanswer
 

Alors oui je vois bien 'azerty' s'afficher dans le formulaire, pas dans la case mais bien en face de l'intitulé, après validation cette valeur n'est pas enregistré dans la base.
 
non, le site n'est pas en ligne, c'est du local pour de l'intranet
 
et non je n'ai pas changé de version de jquery, c'est la dernière que j'ai dl la semaine dernière (http://code.jquery.com/jquery-1.4.2.js)
 
cela ne pourrait pas venir, du fait que je n'ai pas de fonction XMLHttpRequest ?


Message édité par athome le 22-09-2010 à 11:57:16
n°2025327
athome
Posté le 27-09-2010 à 10:05:26  profilanswer
 

problème résolu, code ici :
 
http://cjoint.com/data/jxi3behaSE_test6_good.rar

n°2141271
brahimbb17
Posté le 08-05-2012 à 00:57:42  profilanswer
 

j'ai trouver cette article
 
http://astuces-news.blogspot.com/2 [...] quest.html
 
@+


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

  problème avec xmlhttprequest et firefox

 

Sujets relatifs
problème de formulaireProblème pour redimensionner un Clip
HTML/CSS: Problème - menu avec des imagesProblème include php 5
Galerie d'image AS3 / Problème sous Firefox / Macprobleme d'upload d'un wordpress
Problème linguistique : champs ou colonnes ?probleme page PHP sous internet explorer
probleme intro flash 
Plus de sujets relatifs à : problème avec xmlhttprequest et firefox


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