(resolu) Aide pour script ajax

Aide pour script ajax (resolu) - HTML/CSS - Programmation

Marsh Posté le 05-02-2013 à 14:41:31    

Bonjour,
 
J'utilise un script permettant d'afficher dynamiquement des formulaires en fonction du choix fait dans un bouton radio.
Ce script fonctionne bien sous firefox ou cgrome mais plantage sous ie8... je ne comprend pas pourquoi.
 
Voici le code en question :
 

Code :
  1. <script type="text/javascript">
  2.   var xhr = null;
  3. function getXhr(){
  4. if (window.XMLHttpRequest) { // Mozilla, Safari, ...
  5.     xhr = new XMLHttpRequest();
  6.     //xhr.overrideMimeType('text/xml');
  7. }  else if (window.ActiveXObject) { // IE
  8.     xhr = new ActiveXObject("Microsoft.XMLHTTP" );
  9. }
  10. else { // XMLHttpRequest non supporté par le navigateur  
  11. alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest..." );
  12. xhr = false;
  13. }
  14. }
  15. function afficherForm(id){
  16. getXhr();
  17. xhr.onreadystatechange = function(){
  18. // On ne fait quelque chose que si on a tout reçu et que le serveur est ok
  19. if(xhr.readyState == 1){
  20. document.getElementById("form" ).innerHTML="<p>chargement en cours...</p>";
  21. }
  22. if(xhr.readyState == 4 && xhr.status == 200){
  23. var reponse=xhr.responseText;
  24.   document.getElementById("form" ).innerHTML=reponse;
  25. }
  26. }
  27. var page;
  28. switch(id){
  29.  case '1':
  30.  page="mail.php";
  31.  break;
  32.  case '2':
  33.  page="courrier.php";
  34.  break;
  35.      case '3':
  36.  page="telephone.php";
  37.  break;
  38.     }
  39. xhr.open("GET","./formulaires/"+page,true);
  40. // ne pas oublier ça pour le post
  41. //xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
  42. xhr.send("" );
  43. }
  44. function afficherSousForm(){
  45. document.getElementById("sousform" ).className="affichee";
  46. }
  47. function checkForm(){
  48. var formcontact=document.getElementById('formcontact');
  49. var inputs=formcontact.getElementsByTagName('input');
  50. for(i=0;i<inputs.length;i++){
  51. if(inputs.item(i).value=="" ){
  52. alert("veuillez remplir tous les champs" );
  53. inputs.item(i).focus();
  54. return false;
  55. }
  56. }
  57. var textareas=formcontact.getElementsByTagName('textarea');
  58. for(i=0;i<textareas.length;i++){
  59. if(textareas.item(i).value=="" ){
  60. alert("veuillez indiquer l'objet de votre demande" );
  61. textareas.item(i).focus();
  62. return false;
  63. }
  64. }
  65. var mail=document.getElementsByName("mail" )[0];
  66. var filter = /^[a-z0-9]+([_|\.|-]{1}[a-z0-9]+)*@[a-z0-9]+([_|\.|-]{1}[a-z0-9]+)*[\.]{1}[a-z]{2,6}$/;
  67. if (!filter.test(mail.value)) {
  68. alert("L'adresse mail n'est pas valide." );
  69. mail.focus();
  70. return false;
  71. }
  72. return true;
  73. }
  74.   </script>
  75. <!-- fin de script pour formulaires AJAX //-->
  76. <!-- </head> -->
  77. <!-- debut du corps de page //-->
  78. <!-- <body> -->
  79. <div id="generale">
  80. <div id="corps2">
  81. <div id="centre">
  82. <form id="formSelection" action="./traitement_formulaire.php" method="post">
  83. <fieldset>
  84. <legend>Choix du mode de r&eacute;ponse</legend>
  85. Afin d'optimiser le temps de r&eacute;ponse &agrave; votre question, merci de choisir le mode de r&eacute;ponse souhait&eacute;.<br />
  86. <ul id="choix">
  87. <input type="radio" name="choix" value="1" onclick="afficherForm(this.value)"/>Par courrier &eacute;l&eacute;ctronique</label><br />
  88. <input type="radio" name="choix" value="2" onclick="afficherForm(this.value)"/>Par courrier postal</label><br />
  89. <input type="radio" name="choix" value="3" onclick="afficherForm(this.value)"/>Par t&eacute;l&eacute;phone</label><br />
  90. <fieldset>
  91. <legend>Informations compl&eacute;mentaires</legend>
  92. <div id="form"></div>


 
Quelqu'un aurait il une idée de ce qui bloque ??? J'avoue que je tourne en rond depuis plusieurs jour !!!!
 
Merci d'avance pour votre aide !


Message édité par mozvillat le 05-02-2013 à 16:16:55
Reply

Marsh Posté le 05-02-2013 à 14:41:31   

Reply

Marsh Posté le 05-02-2013 à 16:16:25    

Je m'auto repond !  
 
pour que ie ne plante pas, il faut afficher la <div form> avant de definir xhr...
 
C'est un peu con pour la mise en forme car le formulaire apparait au dessus du choix de reponse, mais au moins ca marche !!!! :-)

Reply

Sujets relatifs:

Leave a Replay

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