Tuto ajax du site ne fonctionne pas sous IE 9

Résolu/Fermé
Super_carotte Messages postés 1419 Date d'inscription mardi 8 janvier 2008 Statut Membre Dernière intervention 27 janvier 2015 - Modifié par jordane45 le 20/01/2015 à 00:05
Super_carotte Messages postés 1419 Date d'inscription mardi 8 janvier 2008 Statut Membre Dernière intervention 27 janvier 2015 - 21 janv. 2015 à 08:19
Bonjour. :)

J'ai suivi ce tutoriel pour avoir une liste liée : [url]https://siddh.developpez.com/articles/ajax/[/url]

Toutefois, il s'avère que le code ne fonctionne pas sous IE9 mais bien sous Firefox.
Apres un test sur mon PC perso, il semble que le code fonctionne sous IE11. C'est donc que sous IE9 que le soucis se présente pour l'instant.

Quelqu'un aurait une idée sur ce qui fait que le code du tutoriel ne fonctionne pas sous mon IE9 ? (J'imagine que le code du tutoriel est bon mais que je n'ai pas réussi à bien le réutiliser.)

Voici mon code test, je l'ai simplifié en enlevant la partie BDD.

Fichier brouillon.php :


<html>
 <head>
   <script type="text/javascript" src="[https://getfirebug.com/firebug-lite.js]"></script>
  <title>Tutoriel Ajax (XHTML + JavaScript + XML)</title>
  <script type='text/javascript'>    
   function getXhr(){
                                var xhr = null; 
    if(window.XMLHttpRequest) // Firefox et autres
       xhr = new XMLHttpRequest(); 
    else if(window.ActiveXObject){ // Internet Explorer 
       try {
                   xhr = new ActiveXObject("Msxml2.XMLHTTP");
               } catch (e) {
                   xhr = new ActiveXObject("Microsoft.XMLHTTP");
               }
    }
    else { // XMLHttpRequest non supporté par le navigateur 
       alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest..."); 
       xhr = false; 
    } 
                                return xhr;
   }

   function go(){
    var xhr = getXhr();
    // On défini ce qu'on va faire quand on aura la réponse
    xhr.onreadystatechange = function(){
     // On ne fait quelque chose que si on a tout reçu et que le serveur est ok
     if(xhr.readyState == 4 && xhr.status == 200){
      leselect = xhr.responseText;
      // On se sert de innerHTML pour rajouter les options a la liste
      document.getElementById('livre').innerHTML = leselect;
     }
    }
 
    // Ici on va voir comment faire du post
    xhr.open("POST","ajaxCombo_box.php",true);
    // ne pas oublier ça pour le post
    xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
    // ne pas oublier de poster les arguments
    // ici, l'id de l'auteur
    sel = document.getElementById('auteur');
    idauteur = sel.options[sel.selectedIndex].value;
    xhr.send("idAuteur="+idauteur);
   }

   
  </script>
 </head>
 <body>
  <form>
   <fieldset style="width: 500px">
    <legend>sssssListe liées</legend>
    <label>Auteurs</label>
    <select name='auteur' id='auteur' onchange='go()'>
     <option value='1'>Aucun</option>     
     <option value='2'>2</option>     
     <option value='3'>3</option>     
    </select>
    <label>Livres</label>
    <div id='livre' style='display:inline'>
    <select name='livre'>
     <option value='-1'>Choisir un auteur</option>
    </select>
    </div>
   </fieldset>
  </form>
 </body>
</html>



Fichier ajaxCombo_box.php :

<?php
$id_auteur = $_POST["idAuteur"];

echo "<select name='livre'>
<option value='-1'>reussi</option>
<option value='2'>".$id_auteur."</option>
<option value='3'>reussi</option>
</select>";
?>


Merci de votre aide. :)

12 réponses

jordane45 Messages postés 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024 4 650
20 janv. 2015 à 00:14
Bonjour,

Je pense que le souci se trouve au niveau du javascript et non du php.....
Sous les "anciennes" versions de IE il est fréquent d'avoir des erreurs de script qui font planter les programmes ....

Déjà.. pense qu'avec IE .. tu dois OBLIGATOIREMENT déclarer tes variables (javascript) par un VAR ....

 function go(){
    var xhr = getXhr();
    // On défini ce qu'on va faire quand on aura la réponse
    xhr.onreadystatechange = function(){
     // On ne fait quelque chose que si on a tout reçu et que le serveur est ok
     if(xhr.readyState == 4 && xhr.status == 200){
      var leselect = xhr.responseText;
      // On se sert de innerHTML pour rajouter les options a la liste
      document.getElementById('livre').innerHTML = leselect;
     }
    }
 
    // Ici on va voir comment faire du post
    xhr.open("POST","ajaxCombo_box.php",true);
    // ne pas oublier ça pour le post
    xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
    // ne pas oublier de poster les arguments
    // ici, l'id de l'auteur
    var sel = document.getElementById('auteur');
    var idauteur = sel.options[sel.selectedIndex].value;
    xhr.send("idAuteur="+idauteur);
   }


De plus... tu as placé ton code JS dans le HEAD ... ok pourquoi pas.... perso je te conseille de le placer EN FIN de page ( en dessous des éléments HTML que tu y manipule).

Je suppose aussi que tu vas surement faire de l'AJAX ailleurs dans ton site... places donc la fonction de création de l'opbjet xmlhttprequest dans un fichier que tu incluras dans ta page.

Ce qui reviendrais à faire un truc du genre:

<html>
 <head>
   <script type="text/javascript" src="https://getfirebug.com/firebug-lite.js"></script>
<!-- Lien vers le fichier JS contenant ta fonction AJAX -->
  <script type="text/javascript" src="xmlhttprequest.js"></script>    
  <title>Tutoriel Ajax (XHTML + JavaScript + XML)</title>
  
 </head>
 <body>
  <form>
   <fieldset style="width: 500px">
    <legend>sssssListe liées</legend>
    <label>Auteurs</label>
    <select name='auteur' id='auteur' onchange='go()'>
     <option value='1'>Aucun</option>     
     <option value='2'>2</option>     
     <option value='3'>3</option>     
    </select>
    <label>Livres</label>
    <div id='livre' style='display:inline'>
    <select name='livre'>
     <option value='-1'>Choisir un auteur</option>
    </select>
    </div>
   </fieldset>
  </form>
 </body>
</html>
<script type="text/javascript">
 function go(){
    var xhr = getXhr();
    // On défini ce qu'on va faire quand on aura la réponse
    xhr.onreadystatechange = function(){
     // On ne fait quelque chose que si on a tout reçu et que le serveur est ok
     if(xhr.readyState == 4 && xhr.status == 200){
      var leselect = xhr.responseText;
      // On se sert de innerHTML pour rajouter les options a la liste
      document.getElementById('livre').innerHTML = leselect;
     }
    }
 
    // Ici on va voir comment faire du post
    xhr.open("POST","ajaxCombo_box.php",true);
    // ne pas oublier ça pour le post
    xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
    // ne pas oublier de poster les arguments
    // ici, l'id de l'auteur
    var sel = document.getElementById('auteur');
    var idauteur = sel.options[sel.selectedIndex].value;
    xhr.send("idAuteur="+idauteur);
   }
</script>


0
Super_carotte Messages postés 1419 Date d'inscription mardi 8 janvier 2008 Statut Membre Dernière intervention 27 janvier 2015 127
Modifié par Super_carotte le 20/01/2015 à 10:40
Bonjour,

Merci pour la réponse.
J'ai donc modifié mon code comme indiqué mais le bug perssiste.
J'ai laissé la fonction ici car c'est la seule page qui utilise des listes liées.

Le point intéressant est remonté par Firebug, on peut voir que le post est bien envoyé mais que la réponse ne revient pas. CF image :
(je n'arrive pas a insérer l'image, j'utilise un autre site)
[[url]http://static.commentcamarche.net/www.commentcamarche.net/pictures/ykx5ccwCfqGVJPMtxyg9FdXUYjNzsZ4hjhWsrci77LdR50yEHOPIUtyPNWOorB1Z-bug-ie.png[/url] [image:[url]http://static.commentcamarche.net/www.commentcamarche.net/pictures/ykx5ccwCfqGVJPMtxyg9FdXUYjNzsZ4hjhWsrci77LdR50yEHOPIUtyPNWOorB1Z-bug-ie-s-.png|804px||center]|fancy][/url]

On voit qu'au lieu d'afficher le résultat, un "UNDEFINED" s'affiche.

Mon code actuel:
brouillon.php:

<html>
 <head>
  <script type="text/javascript" src="[https://getfirebug.com/firebug-lite.js]"></script>
  <title>Tutoriel Ajax (XHTML + JavaScript + XML)</title>
  <script type='text/javascript'>    
   function getXhr(){
                                var xhr = null; 
    if(window.XMLHttpRequest) // Firefox et autres
       xhr = new XMLHttpRequest(); 
    else if(window.ActiveXObject){ // Internet Explorer 
       try {
                   xhr = new ActiveXObject("Msxml2.XMLHTTP");
               } catch (e) {
                   xhr = new ActiveXObject("Microsoft.XMLHTTP");
               }
    }
    else { // XMLHttpRequest non supporté par le navigateur 
       alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest..."); 
       xhr = false; 
    } 
                                return xhr;
   }

  </script>
 </head>
 <body>
  <form>
   <fieldset style="width: 500px">
    <legend>sssssListe liées</legend>
    <label>Auteurs</label>
    <select name='auteur' id='auteur' onchange='go()'>
     <option value='1'>Aucun</option>     
     <option value='2'>2</option>     
     <option value='3'>3</option>     
    </select>
    <label>Livres</label>
    <div id='div_livre' style='display:inline'>
    <select name='livre'>
     <option value='-1'>Choisir un auteur</option>
    </select>
    </div>
   </fieldset>
  </form>
 </body>
</html>
<script type="text/javascript">
 function go(){
    var xhr = getXhr();
    // On défini ce qu'on va faire quand on aura la réponse
    xhr.onreadystatechange = function(){
     // On ne fait quelque chose que si on a tout reçu et que le serveur est ok
     if(xhr.readyState == 4 && xhr.status == 200){
      var leselect = xhr.responseText;
      // On se sert de innerHTML pour rajouter les options a la liste
      document.getElementById('div_livre').innerHTML = leselect;
     }
    }
 
    // Ici on va voir comment faire du post
    xhr.open("POST","ajaxCombo_box.php",true);
    // ne pas oublier ça pour le post
    xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
    // ne pas oublier de poster les arguments
    // ici, l'id de l'auteur
    var sel = document.getElementById('auteur');
    var idauteur = sel.options[sel.selectedIndex].value;
    xhr.send("idAuteur="+idauteur);
   }
</script>


ajaxCombo_box.php:

<?php
 $id_auteur = $_POST["idAuteur"];
 
 echo "<select name='livre'>
 <option value='-1'>reussi</option>     
     <option value='2'>".$id_auteur."</option>     
     <option value='3'>reussi</option> 
 </select>";
?>


Merci :)
0
jordane45 Messages postés 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024 4 650
20 janv. 2015 à 13:24
Bonjour,

Peux tu modifier ton js comme suit et tester ?

 function go(){
    var xhr = getXhr();
    // On défini ce qu'on va faire quand on aura la réponse
    xhr.onreadystatechange = function(){
    
    if (xhr.readyState === 4) {  
        if (xhr.status === 200) {  
          console.log(xhr.responseText)  ;
          var leselect = xhr.responseText;
          // On se sert de innerHTML pour rajouter les options a la liste
         document.getElementById('div_livre').innerHTML = leselect;
        } else {  
           console.log("xhr", oXHR.statusText);  
         
           alert(" Ajax Error " +  oXHR.statusText);
            //Pour info :
            // si l'erreur est : 101 .. cela peut venir de l'url vers le fichier PHP qui est fausse.
        }  
     }  
   }
 
    // Ici on va voir comment faire du post
    xhr.open("POST","ajaxCombo_box.php",true);
    // ne pas oublier ça pour le post
    xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
    // ne pas oublier de poster les arguments
    // ici, l'id de l'auteur
    var sel = document.getElementById('auteur');
    var idauteur = sel.options[sel.selectedIndex].value;
    xhr.send("idAuteur="+idauteur);
   }



0
Super_carotte Messages postés 1419 Date d'inscription mardi 8 janvier 2008 Statut Membre Dernière intervention 27 janvier 2015 127
20 janv. 2015 à 14:21
Bonjour,

Merci d'avoir fait des recherches.

J'ai le même résultat à savoir: post bien envoyé d'apres firebug mais retour a null. (et toujours le undefined en affichage)
0
jordane45 Messages postés 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024 4 650
20 janv. 2015 à 14:58
Pas de message d'erreur ?
Qu'est-ce qui s'affiche dans la console ?

Sinon, peux tu modifier ta page php comme ça puis retester:
<?php
 $id_auteur =isset($_POST["idAuteur"])?$_POST["idAuteur"]:NULL;
 if( $id_auteur){
 $result  = "<select name='livre'>
 <option value='-1'>reussi</option>     
     <option value='2'>".$id_auteur."</option>     
     <option value='3'>reussi</option> 
 </select>";
}else{
 $result = 'no id';
}
echo json_encode($result);
?>
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Super_carotte Messages postés 1419 Date d'inscription mardi 8 janvier 2008 Statut Membre Dernière intervention 27 janvier 2015 127
Modifié par jordane45 le 20/01/2015 à 15:24
Bonjour,

J'ai un indice supplémentaire. J'ai mis deux alert et sur IE ils m'affichent:
pour le premier: "on passe bien ici"
pour le second: "erreur endroit 1undifined"

donc on voit que le xhr.responseText retourne undefined.
Une idée pour ça?

Firebug renvoi la meme chose. Il detecte bien le post de idAuteur mais la reponse reste a null.


Le code actuel:
brouillon.php:

<html>
 <head>
  <script type="text/javascript" src="[https://getfirebug.com/firebug-lite.js]"></script>
  <title>Tutoriel Ajax (XHTML + JavaScript + XML)</title>
  <script type='text/javascript'>    
   function getXhr(){
                                var xhr = null; 
    if(window.XMLHttpRequest) // Firefox et autres
       xhr = new XMLHttpRequest(); 
    else if(window.ActiveXObject){ // Internet Explorer 
       try {
                   xhr = new ActiveXObject("Msxml2.XMLHTTP");
               } catch (e) {
                   xhr = new ActiveXObject("Microsoft.XMLHTTP");
               }
    }
    else { // XMLHttpRequest non supporté par le navigateur 
       alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest..."); 
       xhr = false; 
    } 
                                return xhr;
   }

  </script>
 </head>
 <body>
  <form>
   <fieldset style="width: 500px">
    <legend>sssssListe liées</legend>
    <label>Auteurs</label>
    <select name='auteur' id='auteur' onchange='go()'>
     <option value='1'>Aucun</option>     
     <option value='2'>2</option>     
     <option value='3'>3</option>     
    </select>
    <label>Livres</label>
    <div id='div_livre' style='display:inline'>
    <select name='livre'>
     <option value='-1'>Choisir un auteur</option>
    </select>
    </div>
   </fieldset>
  </form>
 </body>
</html>
<script type="text/javascript">
function go(){
    var xhr = getXhr();
    // On défini ce qu'on va faire quand on aura la réponse
    xhr.onreadystatechange = function(){
    
    if (xhr.readyState === 4) {  
        if (xhr.status === 200) {  
          console.log(xhr.responseText);
     alert("on passe bien ici");
    alert("erreur endroit 1"+ xhr.responseText);
          var leselect = xhr.responseText;
          // On se sert de innerHTML pour rajouter les options a la liste
         document.getElementById('div_livre').innerHTML = leselect;
   
        } else {  
           console.log("xhr", oXHR.statusText);  
         
           alert(" Ajax Error " +  oXHR.statusText);
            //Pour info :
            // si l'erreur est : 101 .. cela peut venir de l'url vers le fichier PHP qui est fausse.
        }  
     }  
   }
 
    // Ici on va voir comment faire du post
    xhr.open("POST","ajaxCombo_box.php",true);
    // ne pas oublier ça pour le post
    xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
    // ne pas oublier de poster les arguments
    // ici, l'id de l'auteur
    var sel = document.getElementById('auteur');
    var idauteur = sel.options[sel.selectedIndex].value;
    xhr.send("idAuteur="+idauteur);
   }
</script>


ajaxcombobox.php:
<?php
 $id_auteur =isset($_POST["idAuteur"])?$_POST["idAuteur"]:NULL;
 if( $id_auteur){
 $result  = "<select name='livre'>
 <option value='-1'>reussi</option>     
     <option value='2'>".$id_auteur."</option>     
     <option value='3'>reussi</option> 
 </select>";
}else{
 $result = 'no id';
}
echo json_encode($result);
?>


Merci :)
0
jordane45 Messages postés 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024 4 650
20 janv. 2015 à 15:29
Essayes peut être de passer en false
 xhr.open("POST","ajaxCombo_box.php",false);
0
Super_carotte Messages postés 1419 Date d'inscription mardi 8 janvier 2008 Statut Membre Dernière intervention 27 janvier 2015 127
20 janv. 2015 à 15:37
Malheureusement, ça ne change pas le résultat.
0
jordane45 Messages postés 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024 4 650
20 janv. 2015 à 15:39
Je viens de tester sur mon poste..... et ça passe !

Testé sous FireFox et sous IE8 !

<html>
 <head>
  <script type="text/javascript" src="[https://getfirebug.com/firebug-lite.js]"></script>
  <title>Tutoriel Ajax (XHTML + JavaScript + XML)</title>
  <script type='text/javascript'>    
   function getXhr(){
    var xhr = null; 
    if(window.XMLHttpRequest) // Firefox et autres
       xhr = new XMLHttpRequest(); 
    else if(window.ActiveXObject){ // Internet Explorer 
       try {
        xhr = new ActiveXObject("Msxml2.XMLHTTP");
       } catch (e) {
        xhr = new ActiveXObject("Microsoft.XMLHTTP");
       }
    }
    else { // XMLHttpRequest non supporté par le navigateur 
     alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest..."); 
     xhr = false; 
    } 
    return xhr;
   }

  </script>
 </head>
 <body>
  <form>
   <fieldset style="width: 500px">
    <legend>sssssListe liées</legend>
    <label>Auteurs</label>
    <select name='auteur' id='auteur' onchange='go()'>
     <option value='1'>Aucun</option>     
     <option value='2'>2</option>     
     <option value='3'>3</option>     
    </select>
    <label>Livres</label>
    <div id='div_livre' style='display:inline'>
    <select name='livre'>
     <option value='-1'>Choisir un auteur</option>
    </select>
    </div>
   </fieldset>
  </form>
 </body>
</html>
<script type="text/javascript">
function go(){
  var xhr = getXhr();
  // On défini ce qu'on va faire quand on aura la réponse
  xhr.onreadystatechange = function(){   
   if (xhr.readyState === 4) {  
    if (xhr.status === 200) {  
      //console.log(xhr.responseText);
      var leselect = xhr.responseText;
      // On se sert de innerHTML pour rajouter les options a la liste
      document.getElementById('div_livre').innerHTML = leselect;  
    }else {  
      // console.log("xhr", oXHR.statusText);  
      alert(" Ajax Error " +  oXHR.statusText);
    }  
   }  
  }
 
  // Ici on va voir comment faire du post
  xhr.open("POST","ajaxCombo_box.php",true);
  // ne pas oublier ça pour le post
  xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
  // ne pas oublier de poster les arguments
  // ici, l'id de l'auteur
  var sel = document.getElementById('auteur');
  var idauteur = sel.options[sel.selectedIndex].value;
  xhr.send("idAuteur="+idauteur);
}
</script>




Fichier ajaxCombo_box.php
<?php
 $id_auteur =isset($_POST["idAuteur"])?$_POST["idAuteur"]:NULL;
 if( $id_auteur){
 $result  = "<select name='livre'>
 <option value='-1'>reussi</option>     
     <option value='2'>".$id_auteur."</option>     
     <option value='3'>reussi</option> 
 </select>";
}else{
 $result = 'no id';
}
echo ($result);
?>



Tu passes bien par ton serveur web ?
Si tu es en local... tu as bien, dans ton url, ... http://localhost/le_nom_de_ta_page.php ??

0
Super_carotte Messages postés 1419 Date d'inscription mardi 8 janvier 2008 Statut Membre Dernière intervention 27 janvier 2015 127
20 janv. 2015 à 15:49
Haha, oui, pour moi aussi ça passe sous FF et sous IE de mon PC perso.

Mais sur le IE de ma boite (IE9 V9.0.8.112xxxx) la, ça plante... (par contre sous le FF de ma boite c'est bon aussi)

Je comprends pas d'ou ça peut venir...
0
jordane45 Messages postés 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024 4 650
20 janv. 2015 à 16:27
A la limite ( je ne sais pas si ça marchera mieux.. mais ça se tente...) essayes de passer par l' AJAX de jquery.
https://api.jquery.com/jQuery.ajax/


function go(){
var idauteur = $('#auteur').val();
var urlToPhpFile = "ajaxCombo_box.php";
  $.ajax({ 
       type: "POST",
           url:urlToPhpFile,
           data: "idAuteur="+idauteur ,
           async: false,
           dataType: "html",
           success: function(reponse){
             // On se sert de innerHTML pour rajouter les options a la liste
              $('#div_livre').html(reponse);  
               },
           error:function(reponse){
               alert('error :' +reponse);
            }
          });
}


Bien sûr... il te faut inclure JQUERY à ta page.
Tu peux le télécharger ici : http://code.jquery.com/jquery-1.11.2.js et ensuite pour l'inclure dans ta page .. tu places (dans le head)
<script type="text/javascript" src="jquery-1.11.2.js "></script>
0
Super_carotte Messages postés 1419 Date d'inscription mardi 8 janvier 2008 Statut Membre Dernière intervention 27 janvier 2015 127
20 janv. 2015 à 17:12
Merci pour l'idée.

Meme résultat : fonctionne sous FF mais pas sous IE. J'ai ajouté un alert au code et ça donne:
"réponse = undefined"

Mon code:
brouillon.php:
<html>
<head>
<title>Tutoriel Ajax (XHTML + JavaScript + XML)</title>
<script type="text/javascript" src="lib/jquery-1.10.2.min.js"></script>

</head>
<body>
<form>
<fieldset style="width: 500px">
<legend>sssssListe liées</legend>
<label>Auteurs</label>
<select name='auteur' id='auteur' onchange='go()'>
<option value='1'>Aucun</option>
<option value='2'>2</option>
<option value='3'>3</option>
</select>
<label>Livres</label>
<div id='div_livre' style='display:inline'>
<select name='livre'>
<option value='-1'>Choisir un auteur</option>
</select>
</div>
</fieldset>
</form>
</body>
</html>
<script type="text/javascript">
function go(){
var idauteur = $('#auteur').val();
var urlToPhpFile = "ajaxCombo_box.php";
$.ajax({
type: "POST",
url:urlToPhpFile,
data: "idAuteur="+idauteur ,
async: false,
dataType: "html",
success: function(reponse){
alert("reponse= "+reponse);
// On se sert de innerHTML pour rajouter les options a la liste
$('#div_livre').html(reponse);
},
error:function(reponse){
alert('error :' +reponse);
}
});
}
</script>


aja.php:
<?php
$id_auteur =isset($_POST["idAuteur"])?$_POST["idAuteur"]:NULL;
/*
if( $id_auteur){
$result = "<select name='livre'>
<option value='-1'>reussi</option>
<option value='2'>".$id_auteur."</option>
<option value='3'>reussi</option>
</select>";
}else{
$result = 'no id';
}
echo ($result);
*/
echo ($id_auteur);
?>
0
jordane45 Messages postés 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024 4 650
20 janv. 2015 à 17:26
re,
Tu peux ajouter ceci dans ta page php
<?php
header("Content-type: text/html; charset=utf-8")
 $id_auteur =isset($_POST["idAuteur"])?$_POST["idAuteur"]:NULL;
 if( $id_auteur){
 $result  = "<select name='livre'>
 <option value='-1'>reussi</option>     
     <option value='2'>".$id_auteur."</option>     
     <option value='3'>reussi</option> 
 </select>";
}else{
 $result = 'no id';
}
echo ($result);
?>;





PS: quand tu utilises les Balises de code pour poster ton code, peux tu spécifier le langage ? ça rend la lecture plus simple.
Voir ici pour plus d'infos :https://codes-sources.commentcamarche.net/faq/10686-le-nouveau-codes-sources-comment-ca-marche#balises-code
0
Super_carotte Messages postés 1419 Date d'inscription mardi 8 janvier 2008 Statut Membre Dernière intervention 27 janvier 2015 127
20 janv. 2015 à 17:44
AMAGAD !
Tu as réussi à faire fonctionner le code :D

Merci beaucoup pour ton aide précieuse. Je vais tester de le faire foctionner avec les vraies données.

Merci encore et bonne année à toi :)

Comme ça: sais tu ce qui bloquait dans les codes précédents?

Pour les intéressés:

brouillon.php:
<html>
 <head>
  <title>Tutoriel Ajax (XHTML + JavaScript + XML)</title>
  <script type="text/javascript" src="lib/jquery-1.10.2.min.js"></script>

 </head>
 <body>
  <form>
   <fieldset style="width: 500px">
    <legend>sssssListe liées</legend>
    <label>Auteurs</label>
    <select name='auteur' id='auteur' onchange='go()'>
     <option value='1'>Aucun</option>     
     <option value='2'>2</option>     
     <option value='3'>3</option>     
    </select>
    <label>Livres</label>
    <div id='div_livre' style='display:inline'>
    <select name='livre'>
     <option value='-1'>Choisir un auteur</option>
    </select>
    </div>
   </fieldset>
  </form>
 </body>
</html>
<script type="text/javascript">
function go(){
var idauteur = $('#auteur').val();
var urlToPhpFile = "ajaxCombo_box.php";
  $.ajax({ 
       type: "POST",
           url:urlToPhpFile,
           data: "idAuteur="+idauteur ,
           async: false,
           dataType: "html",
           success: function(reponse){
			//alert("reponse= "+reponse);
             // On se sert de innerHTML pour rajouter les options a la liste
              $('#div_livre').html(reponse);  
               },
           error:function(reponse){
               alert('error :' +reponse);
            }
          });
}
</script>


ajaxCombo_box.php:
<?php
header("Content-type: text/html; charset=utf-8");
	if(isset($_POST["idAuteur"])){
		$id_auteur = $_POST["idAuteur"];
	}else{
		$id_auteur = NULL;
	}
 if( $id_auteur){
 $result  = "<select name='livre'>
 <option value='-1'>reussi</option>     
     <option value='2'>".$id_auteur."</option>     
     <option value='3'>reussi</option> 
 </select>";
}else{
 $result = 'no id';
}
echo ($result);
?>;
0
jordane45 Messages postés 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024 4 650
20 janv. 2015 à 18:32
Oui... l'encodage de ton fichier php .... il faut qu'il soit en UTF8
0
jordane45 Messages postés 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024 4 650
20 janv. 2015 à 18:36
Bon.. par contre... un sujet qui fache (lol..) ....
en bon codeur que nous sommes... on évite de faire transiter du "html" dans les retours AJAX.

Il serait plus "beau" de récupérer un ARRAY contenant les valeurs à mettre dans le select .. puis en JAVASCRIPT (et/ou jquery) d'alimenter notre SELECT
Mais bon... ce n'est qu'un détail ... et peu de personnes ne le fait de toutes façons ^^



Ps2 ... à la place de ce code :
	if(isset($_POST["idAuteur"])){
		$id_auteur = $_POST["idAuteur"];
	}else{
		$id_auteur = NULL;
	}

... Tu peux utiliser l'écriture TERNAIRE.... ce qui donne :
$id_auteur =isset($_POST["idAuteur"]) ?$_POST["idAuteur"]:NULL;

... c'est mieux non ?

Bonne soirée et bonne continuation. (et bonne année également ) ;-)

Cordialement,
Jordane
0
Super_carotte Messages postés 1419 Date d'inscription mardi 8 janvier 2008 Statut Membre Dernière intervention 27 janvier 2015 127
20 janv. 2015 à 18:50
Je me suis arraché les cheveux a cause d'un probleme d'encodage? ...
Je me méfierai de ça maintenant.

Je note tes reparques et je vais essayer ça.

Merci :)
0
jordane45 Messages postés 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024 4 650
20 janv. 2015 à 19:03
Je me suis arraché les cheveux a cause d'un probleme d'encodage?

Oui.. ben.. on est deux... je te rappelle que j'ai cherché avec toi... :-)
@++
0
jordane45 Messages postés 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024 4 650
20 janv. 2015 à 19:05
oupsss.. petit oubli ...
Si la question est résolue..
Merci de ne pas oublier de clôturer le sujet
(en cliquant sur le lien "Marquer comme résolu" qui se trouve sous le titre de la question)

Cordialement,
Jordane
0
Super_carotte Messages postés 1419 Date d'inscription mardi 8 janvier 2008 Statut Membre Dernière intervention 27 janvier 2015 127
21 janv. 2015 à 08:19
Je viens de tester sur le vrai site et ça fonctionne.
Merci à toi d'avoir pris le temps de m'aider :)
0