Bourinho Posté 10 Octobre 2006 Posté 10 Octobre 2006 Bonjour à tous, Ce qui m'amène est le problème suivant... J'utilise la technologie Ajax (enfin, j'essaie )dans deux fonctions javascript appelées lors d'un même événement... var xhr = null; function getXhr() { 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 xhr = false; } } function ListeVille() { 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) { // On se sert de innerHTML pour rajouter les options a la liste document.getElementById('PropositionVille').innerHTML = xhr.responseText; } } // Ici on va voir comment faire du post xhr.open("POST","ajax/ListeVille.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 sel = document.getElementById('Departement'); Departement = escape(sel.options[sel.selectedIndex].value); VilleOUCodePostal=escape(document.getElementById('VilleOUCodePostal').value); xhr.send("Departement="+Departement+"&VilleOUCodePostal="+VilleOUCodePostal); } function PseudoValide() { Pseudo=document.getElementById('pseudo').value; 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) { // On se sert de innerHTML pour rajouter les options a la liste document.getElementById('ImagePseudoValide').innerHTML = xhr.responseText; } } // Ici on va voir comment faire du post xhr.open("POST","ajax/PseudoValide.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 xhr.send("Pseudo="+escape(Pseudo)); } function PageJavaScript() { PseudoValide(); ListeVille(); } Plus loin, dans le code en html, on trouve : <body onLoad='PageJavaScript()'> Et je m'aperçois que seul ListeVille est bien exécutée... Y aurait-il une astuce pour que cela fonctionne sans devoir réécrire une nouvelle fonction javascript avec une nouvelle page en php? Par avance, merci!
PhpTech Posté 10 Octobre 2006 Posté 10 Octobre 2006 (modifié) Bonsoir, le plus simple, je pense, serais que tu utilise une fonction "commune", à laquelle tu passerais les arguments nécessaires. Une en JS (que tu inclue ensuite dans tes pages HTML), et pourquoi pas, (soyons fou!) une seconde que tu mettrais dans une classe PHP (récuperation -> analyse -> soumission de la réponse). Ca n'est pas trés compliqué, tu as le modele sous les yeux Bonne continuation, David. [Edit] En répondant à un autre post, il m'est venue une autre idée, pourquoi ne pas utilisé une librairie toute prête ? Genre Moo.ajax [/Edit] Modifié 10 Octobre 2006 par PhpTech
Bourinho Posté 12 Octobre 2006 Auteur Posté 12 Octobre 2006 Salut, Merci pour ton aide mais ta proposition ne respecte pas le cahier des charges (ce qui m'embête, c'est que j'aimerais réutiliser certains des fichiers php sur une autre page...alors j'ai pas trop envie de les mixer!!!) En fait, j'aimerais une ligne qui permettrait de faire : Attendre que NewXhrOk change de valeur... Comme suit:(les nouvelles lignes sont suivies de //### function PseudoValide(){Pseudo=document.getElementById('pseudo').value;getXhr();NewXhrOk=false;//###// On défini ce qu'on va faire quand on aura la réponsexhr.onreadystatechange = function(){// On ne fait quelque chose que si on a tout reçu et que le serveur est okif(xhr.readyState == 4 && xhr.status == 200){// On se sert de innerHTML pour rajouter les options a la listedocument.getElementById('ImagePseudoValide').innerHTML = xhr.responseText;NewXhrOk=true;//###}}// Ici on va voir comment faire du postxhr.open("POST","ajax/PseudoValide.php",true);// ne pas oublier ça pour le postxhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');// ne pas oublier de poster les argumentsxhr.send("Pseudo="+escape(Pseudo));Attendre que NewXhrOk change de valeur;//###} J'ai essayé avec un do while mais ça ne fonctionne pas...ça mouline et FireFox donne un message d'erreur... Par avance, merci!
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant