Passage variable dans page php via javascript
Résolu
grabenouite01
Messages postés
19
Date d'inscription
Statut
Membre
Dernière intervention
-
grabenouite01 Messages postés 19 Date d'inscription Statut Membre Dernière intervention -
grabenouite01 Messages postés 19 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Tout d'abord ne démarrez pas au quart de tour en disant que ce sujet à déjà été traité ^^
Le thème a été traité mais mon problème n'en est pas plus résolu.
Donc voici le soucis:
une page php avec un bête formulaire contenant entre autre un select avec des valeurs de 1 à 10.
Ce select appel une fonction javascript -->
<select name="nbcartesavion" id="nbcartesavion" value="0" onchange=carteavion(value); >
Par la suite, ce script récupère la valeur choisie par l'utilisateur dans le select.
Le voici :
Voilà, c'est un peu long et je m'en excuse mais je préfère vous donnez le cheminement et les point qui me paraissent importants.
Merci d'avance pour vos réponses.
Tout d'abord ne démarrez pas au quart de tour en disant que ce sujet à déjà été traité ^^
Le thème a été traité mais mon problème n'en est pas plus résolu.
Donc voici le soucis:
une page php avec un bête formulaire contenant entre autre un select avec des valeurs de 1 à 10.
Ce select appel une fonction javascript -->
<select name="nbcartesavion" id="nbcartesavion" value="0" onchange=carteavion(value); >
Par la suite, ce script récupère la valeur choisie par l'utilisateur dans le select.
Le voici :
function carteavion(carte){ var requete='./carteavion.php?nbcartesavion='+carte; var htr=httpRequest(); //récupère l'objet XMLHttpRequest htr.onreadystatechange=function(){ if(4==htr.readyState && 200==htr.status) // j'injecte dans un div d'id carteavion le résultat de la page de traitement carteavion.php document.getElementById("carteavion").innerHTML=htr.responseText; } htr.open("GET", requete, true); htr.send(null); } Ce que je souhaite faire, c'est envoyé cette valeur à une page de traitement php qui va m'afficher un certains nombre de champs (input type=text) en fonction de la valeur récupérer. En utilisant la méthode GET comme vous le voyez ds le script ci dessus, aucun problème, tous fonctionne sur Chrome et Firefox MAIS pas sur IE 8. Or les futurs utilisateurs sont principalement sur IE je dois donc optimiser cette page pour IE. Je décide donc de passer par la méthode POST en testant les résultats d'abord sur Chrome. Voici le nouveau script: function carteavion(){ var data = "abc="+document.getElementById("nbcartesavion").value; //on récupère la valeur value du select dont l'id est nbcartesavion var requete='./carteavion.php'; //la page requise de traitement var htr=httpRequest(); //récupération de l'objet XMLHttpRequest htr.open("POST", requete, true); //on initialise la requête avec la méthode POST, à l'url "requete" en mode asynchrone htr.send(data); //on envoi la requête http au serveur en transmettant la valeur data htr.onreadystatechange=function(){ if(4==htr.readyState && 200==htr.status) document.getElementById("carteavion").innerHTML=htr.responseText; // on injecte le résultat de la requête (htr.reponseXML) dans un div qui a pour id carteavion } } Le soucis c'est que ma page de traitement n'arrive pas à récupérer le $_POST : <?php //la page carteavion.php $nb=$_POST['abc']; echo "<p>".$_POST['abc']."</p>"; //ce echo permet uniquement de voir quelle est la valeur de $_POST['abc'] (pour l'instant elle vaut "Array") if($nb != NULL){ //affichage des input }
Voilà, c'est un peu long et je m'en excuse mais je préfère vous donnez le cheminement et les point qui me paraissent importants.
Merci d'avance pour vos réponses.
A voir également:
- Passage variable dans page php via javascript
- Supprimer une page dans word - Guide
- Passage qwerty azerty - Guide
- Imprimer tableau excel sur une page - Guide
- Page d'accueil - Guide
- Page privée - Guide
8 réponses
Je précise tout de même l'erreur qui s'affiche sur ma page -->
Notice: Undefined index: abc in C:\wamp\www\ODT\carteavion.php on line 4
Notice: Undefined index: abc in C:\wamp\www\ODT\carteavion.php on line 4
Salut,
rah que ton code est long alors qu'en Jquery tu peux utiliser ajax en 5 lignes !
je te conseille donc de voir de ce côté...
https://api.jquery.com/jQuery.ajax/
rah que ton code est long alors qu'en Jquery tu peux utiliser ajax en 5 lignes !
je te conseille donc de voir de ce côté...
https://api.jquery.com/jQuery.ajax/
J'ai utilisé le JQuerry avant d'en arriver là. Seulement j'ai eu qq soucis avec les variables c'est pour ça que je me suis contenté du javascript et du php. Mais je vais remettre un peu le nez dedans ;)
Je suis un peu pris par le temps c'est pour ça en fait
Je suis un peu pris par le temps c'est pour ça en fait
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Après une séries de tests (encore et toujours ^^) j'ai trouvé d'où venait le vrai problème. Un truc tout con comme bien souvent.
IE 8 n'interprète pas document.getElementById(nom_id).value
J'ai donc testé avec document.getElementsByName(name).value, et là, l'alert me retourne un undefined au lieu d'une boîte vide avec le document.getElementById(nom_id).value.
Je recherche donc actuellement d'autres techniques. Par exemple :
document.forms['formulaire'].elements['id'].value, celle-ci ne marche pas non plus avec IE mais fonctionne avec FF et Chrome...
Donc toujours bloqué mais je ne désespère pas ^^
IE 8 n'interprète pas document.getElementById(nom_id).value
J'ai donc testé avec document.getElementsByName(name).value, et là, l'alert me retourne un undefined au lieu d'une boîte vide avec le document.getElementById(nom_id).value.
Je recherche donc actuellement d'autres techniques. Par exemple :
document.forms['formulaire'].elements['id'].value, celle-ci ne marche pas non plus avec IE mais fonctionne avec FF et Chrome...
Donc toujours bloqué mais je ne désespère pas ^^
J'ai testé "window.document.forms['formulaire'].id.value", forcément il affiche undefined puisqu'il n'ya pas de champ 'id' ^^ et j'ai testé "window.document.forms['formulaire'].nbcartesavion.value"
avec nbcartesavion le vrai id du div mais là il ne m'affiche rien même pas undefined.
Mais j'avoue, ça doit leur coûter trop cher de se mettre aux normes du w3c...
avec nbcartesavion le vrai id du div mais là il ne m'affiche rien même pas undefined.
Mais j'avoue, ça doit leur coûter trop cher de se mettre aux normes du w3c...
Pas good :( et déconne aussi sur chrome -->
Uncaught TypeError: Cannot read property 'value' of null
Etant donné que lorsqu'il ne m'affiche pas undefined, il m'affiche une boîte d'alerte vide, est ce que ça pourrait venir d'un encodage des caractères ? sachant que la valeur que je récupère et un chiffre entre 0 et 10
Uncaught TypeError: Cannot read property 'value' of null
Etant donné que lorsqu'il ne m'affiche pas undefined, il m'affiche une boîte d'alerte vide, est ce que ça pourrait venir d'un encodage des caractères ? sachant que la valeur que je récupère et un chiffre entre 0 et 10
J'ai suivi ton conseil en pensant que ça marcherait mais toujours pas... enfin sur IE parceque sur FF et Chrome ça marche
le javascript
et le html
le javascript
function carteavion(){ var data = document.formulaire.plane.value; var requete='./form_airfrance.php?cartouche='+data; var htr=httpRequest(); alert(data); htr.open("GET", requete, true); htr.send(null); htr.onreadystatechange=function(){ if(4==htr.readyState && 200==htr.status) document.getElementById("arobase").innerHTML=htr.responseText; } }
et le html
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr"> <head> <title>Profils utilisateurs </title> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> <link rel="stylesheet" media="screen" type="text/css" href="styleprofil.css" title="style" /> <script type="text/javascript" src="./javascript/httprequest.js"></script> <script language="javascript" type="text/javascript" src="./javascript/divers2.js"></script> </head> <body> <form method="POST" action="profiluser.php" name="formulaire" onSubmit="return check();"> <div id="client"> <table CELLPADDING='0.5' COLS='1'> <caption>______Avion______</caption> <tr > <th> Carte de fidelité :</th> <td> Nombre de cartes : <select name="plane" id="plane" value="0" onchange=carteavion();> <?php for($j=0;$j<=10;$j++){ echo'<option>'.$j.'</option>'; } ?> </select> <div id="arobase"> </div> </td> </tr> </table> </div> </form> </body> </html>
Bon j'ai viré le getElementbyId et à la place j'ai utilisé du Jquery
et ca marche nickel sous internet explorer !!
je te donne le code :
N'hésites pas si tu comprends pas ;)
et ca marche nickel sous internet explorer !!
je te donne le code :
<script> $(document).ready(function() { alert($("#plane").val()); $("#plane").change(function () { alert($("#plane").val()); }); }); </script>
N'hésites pas si tu comprends pas ;)
Donc maintenant ce que je voudrais faire, c'est afficher le contenu d'une page php lorsque la valeur change dans une boite de dialogue (que je met dans le div arobase)
Ca donnerait qqchose comme ça :
Ca donnerait qqchose comme ça :
var requete='./form_airfrance.php'; $(document).ready(function() { alert($("#plane").val()); $("#plane").change(function () { $("#arobase").load(requete, function() { $(this).dialog({ title:"ERREUR"})}); $("#arobase").show(); return(false); }); });
Mmmm d'accord,
bon pour cela avant tu avais utiliser du ajax pure, essayes maintenant d u'itliser de l'ajax via jquery en faisant :
Un truc du genre ;)
bon pour cela avant tu avais utiliser du ajax pure, essayes maintenant d u'itliser de l'ajax via jquery en faisant :
$.ajax({ type: "POST", url: "lapagequetuveuxappeller.php", data: "name"+$("#plane").val()", success: function(msg){ alert( "Data Saved: " + msg ); } });
Un truc du genre ;)
Finalement j'ai résolu mon problème d'origine avec un truc un peu biscornu au premier abord mais qui marche sur tous les nav :
Donc je passe en paramètre de ma fonction js ce que l'utilisateur a sélectionné dans la liste déroulante avec ce this.options[this.selectedIndex].value.
Sinon je vais garder le jQuery pour une histoire de validation de formulaire.
Donc voilà un p'tit résolu quand même, ça fera pas de mal ;)
onchange="cma_fonction(this.options[this.selectedIndex].value); "
Donc je passe en paramètre de ma fonction js ce que l'utilisateur a sélectionné dans la liste déroulante avec ce this.options[this.selectedIndex].value.
Sinon je vais garder le jQuery pour une histoire de validation de formulaire.
Donc voilà un p'tit résolu quand même, ça fera pas de mal ;)