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
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
A voir également:
- Tuto ajax du site ne fonctionne pas sous IE 9
- Site de telechargement - Accueil - Outils
- Site comme coco - Accueil - Réseaux sociaux
- Quel site remplace coco - Accueil - Réseaux sociaux
- Site pour vendre des objets d'occasion - Guide
- Site inaccessible - Guide
12 réponses
jordane45
Messages postés
38386
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
16 janvier 2025
4 727
20 janv. 2015 à 00:14
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 ....
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:
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>
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
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:
ajaxCombo_box.php:
Merci :)
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 :)
jordane45
Messages postés
38386
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
16 janvier 2025
4 727
20 janv. 2015 à 13:24
20 janv. 2015 à 13:24
Bonjour,
Peux tu modifier ton js comme suit et tester ?
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); }
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
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)
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)
jordane45
Messages postés
38386
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
16 janvier 2025
4 727
20 janv. 2015 à 14:58
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:
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); ?>
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
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:
ajaxcombobox.php:
Merci :)
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 :)
jordane45
Messages postés
38386
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
16 janvier 2025
4 727
20 janv. 2015 à 15:29
20 janv. 2015 à 15:29
Essayes peut être de passer en false
xhr.open("POST","ajaxCombo_box.php",false);
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
20 janv. 2015 à 15:37
Malheureusement, ça ne change pas le résultat.
jordane45
Messages postés
38386
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
16 janvier 2025
4 727
20 janv. 2015 à 15:39
20 janv. 2015 à 15:39
Je viens de tester sur mon poste..... et ça passe !
Testé sous FireFox et sous IE8 !
Fichier ajaxCombo_box.php
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 ??
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 ??
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
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...
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...
jordane45
Messages postés
38386
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
16 janvier 2025
4 727
20 janv. 2015 à 16:27
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/
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)
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>
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
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:
aja.php:
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);
?>
jordane45
Messages postés
38386
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
16 janvier 2025
4 727
20 janv. 2015 à 17:26
20 janv. 2015 à 17:26
re,
Tu peux ajouter ceci dans ta page php
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
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
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
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:
ajaxCombo_box.php:
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); ?>;
jordane45
Messages postés
38386
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
16 janvier 2025
4 727
20 janv. 2015 à 18:32
20 janv. 2015 à 18:32
Oui... l'encodage de ton fichier php .... il faut qu'il soit en UTF8
jordane45
Messages postés
38386
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
16 janvier 2025
4 727
20 janv. 2015 à 18:36
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 :
... Tu peux utiliser l'écriture TERNAIRE.... ce qui donne :
... c'est mieux non ?
Bonne soirée et bonne continuation. (et bonne année également ) ;-)
Cordialement,
Jordane
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
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
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 :)
Je me méfierai de ça maintenant.
Je note tes reparques et je vais essayer ça.
Merci :)
jordane45
Messages postés
38386
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
16 janvier 2025
4 727
20 janv. 2015 à 19:03
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... :-)
@++
jordane45
Messages postés
38386
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
16 janvier 2025
4 727
20 janv. 2015 à 19:05
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
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
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
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 :)
Merci à toi d'avoir pris le temps de m'aider :)